【问题标题】:How to produce non-standard plot type with ggplot?如何使用 ggplot 生成非标准绘图类型?
【发布时间】:2012-04-04 19:21:00
【问题描述】:

我想用 ggplot 制作一个看起来非常接近此的图 (found here):

但是,我想绘制条件范围而不是频率。这是我想用 5 个条件制作的情节草图:

我的数据被安排为范围的开始和结束坐标。例如,对于条件 5,范围的开始是 30,范围的结束是 40(为了清楚起见,我在图表上标记了这个)。我的数据来自以下形式的文件:

id      start   end
1       20      35
2       60      75    
3       10      30
4       80      90
5       30      40

我有大约 100 个开始值和结束值,我想以这种方式在一张图上绘制它们。最终的情节应该只有两种颜色。

更新:

为了将来参考,贾斯汀的解决方案产生了这个:

【问题讨论】:

  • 非常详细的问题!
  • 感谢您更新以显示解决方案的情节。

标签: r ggplot2


【解决方案1】:

类似这样的:

library(ggplot2)
library(reshape)
dat <- data.frame(lets=letters[1:5], low=1:5, mid=3:7, high=10:14)
dat.melt <- melt(dat, id.vars='lets')


ggplot(dat.melt, aes(x=lets, y=value, fill=variable)) + 
  geom_bar(stat='identity') + 
  scale_fill_manual(breaks=c('low','mid','high'), values=c('blue','red','blue')) +
  coord_flip()

但相当依赖您的数据...

【讨论】:

  • 哇,这正是我要找的。对于您的示例,我仍然无法将我的数据融合到正确的数据结构中。我怎样才能像dat.melt 这样融化我的数据?我试过melt(id, start, end),但没用。我编辑了我的问题以显示我的数据结构。谢谢。
  • melt(yourdata, id.vars='id') 会给你一个像我一样的结构。您还可以将第一种颜色替换为NA,这样只有图片中的阴影部分会被着色。
  • 太棒了,非常感谢。这正是我想要的。
  • 复制原帖中的图,使用:dat &lt;- data.frame(lets=1:5, low=c(20,60,10,80,30), mid=c(15,15,20,10,10), high=c(65,25,70,10,60))
猜你喜欢
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多