2

我一直在寻找几个小时,但我找不到这样做的功能。

我如何生成一个像

http://i.imgur.com/C2BXYPc.png

可以说我有一个数组x1 = c(2,13,4)y2=c(5,23,43). 我想创建 3 个高度为 2-5,13-23 的块...

我将如何解决这个问题?我希望我能指出正确的方向,看看什么内置函数?

4

2 回答 2

3

我没有使用您的数据,因为您说您正在使用数组,但是您给了我们两个向量。此外,您向我们展示的数据是重叠的。这意味着,如果您绘制三个条形图,您只会看到两个。

根据您提供的小图像,您要为每个人或日期绘制三个范围。使用时间序列,我们通常会看到它来绘制最小值/最大值、标准偏差和当前数据。

诀窍是将系列绘制为图层。第一个系列是范围最大的系列(本例中的米色带)。在下面的示例中,我首先绘制一个空图,然后添加三层矩形,一层用于米色,一层用于灰色,一层用于红色。

#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-23T20:34:49.707 回答
2

根据 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))

在此处输入图像描述

于 2013-02-22T06:28:15.040 回答