我一直在寻找几个小时,但我找不到这样做的功能。
我如何生成一个像
可以说我有一个数组x1 = c(2,13,4)
和y2=c(5,23,43)
. 我想创建 3 个高度为 2-5,13-23 的块...
我将如何解决这个问题?我希望我能指出正确的方向,看看什么内置函数?
我没有使用您的数据,因为您说您正在使用数组,但是您给了我们两个向量。此外,您向我们展示的数据是重叠的。这意味着,如果您绘制三个条形图,您只会看到两个。
根据您提供的小图像,您要为每个人或日期绘制三个范围。使用时间序列,我们通常会看到它来绘制最小值/最大值、标准偏差和当前数据。
诀窍是将系列绘制为图层。第一个系列是范围最大的系列(本例中的米色带)。在下面的示例中,我首先绘制一个空图,然后添加三层矩形,一层用于米色,一层用于灰色,一层用于红色。
#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 并不完全清楚您想要什么,但根据您所写的内容:
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))