Я не использовал свои данные, потому что вы говорите, вы работаете с массив, но вы дали нам два вектора. Более того, данные, которые вы нам показали, перекрываются. Это означает, что если вы нарисуете три бара, вы увидите только два.
На основании небольшого изображения, которое вы предоставили, у вас есть три диапазона, которые вы хотите построить для каждого человека или даты. Используя временные ряды, мы обычно видим это, чтобы построить график min/max, стандартное отклонение и текущие данные.
Трюк состоит в том, чтобы нарисовать серию в виде слоев. Первая серия - одна с наибольшим диапазоном (бежевая полоса в этом примере). В следующем примере я сначала рисую пустой сюжет, и добавляю три слоя прямоугольников, один для бежевого, один для серого и один для красного.
#Create data.frame
n=100
df <-data.frame(1:n,runif(n)*10,60+runif(n)*10,25+runif(n)*10,40+runif(n)*10,35-runif(n)*10,35+runif(n)*10)
colnames(df) <-c("id","beige.min","beige.max","gray.min","gray.max","red.min","red.max")
#Create chart
plot(x=df$id,y=NULL,ylim=range(df[,-1]), type="n") #blank chart, ylim is the range of the data
rect(df$id-0.5,df[,2],df$id+0.5,df[,3],col="beige", border=FALSE) #first layer
rect(df$id-0.5,df[,4],df$id+0.5,df[,5],col="gray", border=FALSE) #second layer
rect(df$id-0.5,df[,6],df$id+0.5,df[,7],col="darkred", border=FALSE) #third layer
Я не знаю, функции, которые могут сделать это (хотя это трудно для меня, чтобы увидеть что-нибудь на 'png'), но вы можете написать свою собственную функцию, используя' прямоугольник () 'функция. –