首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用块进行绘图

使用块进行绘图
EN

Stack Overflow用户
提问于 2013-02-22 13:18:26
回答 2查看 184关注 0票数 2

如何生成像这样的图

假设我有一个数组x1 = c(2,13,4)y2=c(5,23,43)。我想创建3个块与高度从2-5,13-23...

我该如何处理这个问题?我希望我能被指引到正确的方向去看什么内置的函数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-24 04:34:50

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

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

诀窍是以层的形式绘制序列图。第一个系列是范围最大的系列(本例中为米色波段)。

代码语言:javascript
运行
复制
#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

票数 3
EN

Stack Overflow用户

发布于 2013-02-22 14:28:15

不完全清楚您想要基于png的是什么,但基于您编写的内容:

代码语言:javascript
运行
复制
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))

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15017367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档