【问题标题】:Visualize aggregate data using ggplot2使用 ggplot2 可视化聚合数据
【发布时间】:2013-01-13 20:44:28
【问题描述】:

我有一些聚合数据想使用 ggplot2 进行可视化,我现在正在寻找一种智能快捷方式来绘制聚合数据?

我的数据是这样的,(我目前只有df2这样的数据)

df <- data.frame(cyl = mtcars[,2])
(df2 <- t(table(df$cyl)))
      4  6  8
[1,] 11  7 14

我有兴趣创建这样的情节,(见下文code 用于创建此情节)

require(ggplot2)
df <- data.frame(cyl = mtcars[,2])
df$cyl2  <- ifelse(df$cyl > 4, c('Treatment'), c('Control'))
# hline.data <- data.frame(cyl2 = c('Treatment', 'Control'), cyl = c(10, 2))

c <- ggplot(df, aes(factor(cyl)))
c + geom_bar(fill="white", colour="darkgreen", alpha=0.5) + facet_grid(. ~ cyl2, scales = "free", space = "free") + theme(axis.title.x  = element_blank(), axis.title.y  = element_blank(), axis.ticks.x = element_blank(), legend.position = "none") + scale_y_continuous(breaks=c(4, 6, 8), labels=c("Minimal","Mild", "Moderate")) + scale_x_discrete(breaks=c(6,8,4), labels=c("Treat 1", "Treat 2", "Control")) 

对于做到这一点的人的奖励问题。是否可以使scale_y_continuous 中的breaks= 在两个方面有所不同?或者添加geom_hline 并在边距中添加一些文本会是更好的策略吗?添加边距似乎很棘手,我将不得不覆盖剪裁like thisthis

【问题讨论】:

  • 我不确定我是否理解您的主要问题:您还想对已有的情节做什么?
  • @Marius,感谢您指出模糊之处。我的主要问题是这是否是一种基于聚合数据进行绘图的方法。我只有df2 中显示的汇总数据。

标签: r ggplot2 visualization aggregate


【解决方案1】:

您基本上只需将聚合数据放入数据框,然后添加组标签:

df <- data.frame(cyl = mtcars[,2])
(df2 <- t(table(df$cyl)))
# Assume you know the group labels
df2 <- data.frame(val=df2[1, ], label=c("Control", "Treat1", "Treat2"))
df2$cyl2 <- c("Control", "Treatment", "Treatment")

ggplot(df2, aes(label, val)) +
geom_bar(fill="white", colour="darkgreen", alpha=0.5, stat="identity") +
  facet_grid(. ~ cyl2, scales = "free", space = "free") +
  theme(axis.title.x  = element_blank(), axis.title.y  = element_blank(),
        axis.ticks.x = element_blank(), legend.position = "none") +
  scale_y_continuous(breaks=c(4, 6, 8), labels=c("Minimal","Mild", "Moderate")) +
  scale_x_discrete(breaks=c(6,8,4), labels=c("Treat 1", "Treat 2", "Control"))

【讨论】:

  • Touché,唯一的细节是这个解决方案不能重用上面的代码。我并不是说我不能重写它以利用这些数据工作,但我的问题是是否有一个智能快捷方式来展开'聚合数据。
  • 很少调整绘图代码就可以完全更改数据。将cyl2 列添加到df2,例如df2$cyl2 &lt;- c("Control", "Treatment", "Treatment"),你应该能够继续使用你的facet_grid() 电话和情节的大部分其他元素。
  • @EricFail:我现在已经用你原来的绘图代码重做了它,我唯一需要做的就是添加cyl2 变量并将stat="identity" 添加到geom_bar 调用中。
  • 谢谢。感谢您抽出宝贵时间完成答案中的详细信息。
猜你喜欢
  • 1970-01-01
  • 2019-01-24
  • 2018-10-23
  • 2013-11-14
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
  • 2022-01-21
相关资源
最近更新 更多