如何生成像这样的图

假设我有一个数组x1 = c(2,13,4)和y2=c(5,23,43)。我想创建3个块与高度从2-5,13-23...
我该如何处理这个问题?我希望我能被指引到正确的方向去看什么内置的函数?
发布于 2013-02-24 04:34:50
我没有使用你的数据,因为你说你正在处理一个数组,但你给了我们两个向量。此外,您向我们展示的数据是重叠的。这意味着如果你绘制了三个条形图,你只会看到两个。
根据您提供的小图像,您有三个要为每个人或日期绘制的范围。使用时间序列,我们通常可以看到这一点来绘制最小/最大值、标准差和当前数据。
诀窍是以层的形式绘制序列图。第一个系列是范围最大的系列(本例中为米色波段)。
#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

发布于 2013-02-22 14:28:15
不完全清楚您想要基于png的是什么,但基于您编写的内容:
x1 <- c(2,13,4)
y2 <- c(5,23,43)
foo <- data.frame(id=1:3, x1, y2)
library(ggplot2)
ggplot(data=foo) + geom_rect(aes(ymin=x1, ymax=y2, xmin=id-0.4, xmax=id+0.4))

https://stackoverflow.com/questions/15017367
复制相似问题