【问题标题】:Create balloon plot with ggplot2: use ..count.. to adjust size of geom_point?使用 ggplot2 创建气球图:使用 ..count.. 调整 geom_point 的大小?
【发布时间】:2015-08-05 22:58:22
【问题描述】:

我想用ggplot2 创建一个气球图,其中点的大小是给定坐标处数据的频率。

给定data.frame d

d = structure(list(value.x = structure(c(2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 2L), .Label = c("Not at all Knowledgeable", "Somewhat Knowledgeable", "Very Knowledgeable"), class = c("ordered", "factor")), value.y = structure(c(5L, 5L, 3L, 5L, 5L, 5L, 5L, 5L, 4L, 4L, 5L, 4L, 4L, 4L, 5L, 4L, 5L, 5L, 4L, 4L), .Label = c("Much less knowledgeable", "Less knowledgeable", "Same as before workshop", "More knowledgeable", "Much more knowledgeable"), class = c("ordered", "factor"))), .Names = c("value.x", "value.y"), row.names = c(NA, 20L), class = "data.frame")

我想做这样的事情:

ggplot(d,aes(value.x,value.y,size=..count..))+geom_point()

数据点与数据出现的次数成正比,但我无法弄清楚如何正确设置我想要的点的大小。

重要的是,我想避免在 d 中创建一个新列,仅用于其他数据集(例如 http://www.r-bloggers.com/balloon-plot-using-ggplot2/)的数据计数。这看起来很乱,如果可以的话,我想利用ggplot2 的力量。

【问题讨论】:

  • stat_sum() ...
  • 关于你的最后一句话:虽然ggplot 中确实有一些不错的辅助函数,但在将数据提供给ggplot 之前聚合数据通常更容易、更透明。
  • 您确实意识到 ggplot 实际上是在复制您的数据并添加一个计算列,对吧?为什么不自己做(即使是在临时数据框中),以便您拥有更多控制权?怎么这么“乱”?

标签: r ggplot2


【解决方案1】:

根据@BenBolker 的建议,我找到了使用stat_sum() 的解决方案:

ggplot(d, aes(value.x, value.y, size = ..n..)) + stat_sum()

【讨论】:

  • 注意,对于良好的图形设计,您可能需要添加 +scale_size_area() 以使面积而不是半径与计数的数量成正比 ...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多