【问题标题】:What exactly does stat=identity mean in geom_bar ggplot?stat=identity 在 geom_bar ggplot 中究竟是什么意思?
【发布时间】:2020-03-10 00:01:32
【问题描述】:

我正在完成其他人的工作,但无法理解这行代码的用途:

ggplot(data, aes(x = Group, y = Value)) + geom_bar(stat="identity", position = "dodge", lwd = 1,  aes(fill = Group))

这是一个数据示例

   Group  Value
1    A      20
2    B      74
3    B      50
...
n    A      24

我认为使用代码的目的是绘制一个条形图,总结 A 组和 B 组的值。但是我相信为 A 组和 B 组的每个元素以及所有这些条都绘制了一个条重叠,只显示每组的最大值。 是这样吗? 我认为目的是绘制一个汇总统计数据,无论是平均值还是中位数,而不是全部绘制,并且只能看到最大值。

如果这不是正在发生的事情,我将不胜感激任何帮助理解使用 stat='identity' 的含义,因为阅读文档对我没有多大帮助。

谢谢

【问题讨论】:

标签: r ggplot2 bar-chart


【解决方案1】:

默认情况下,geom_bar() 类似于 geom_histogram() 的离散版本。没有stat = "identity",它会执行一个统计变换stat_bin(Group),计算Group每个值的观察次数,然后生成一个变量count并自动映射到y轴上,由条形的高度表示.所以在没有stat = "identity" 的情况下提供aes(y) 是无效的,因为y 变量是由geom_bar() 计算的,而不是由您指定的。 stat = "identity" 当您不希望条形的高度成为 x 变量的计数时很有用,但您的数据中有一些值列,所以 geom_bar() 将什么也不做,等待您提供 y 变量。

如果您想为每个Group 绘制一个汇总统计数据,并且该汇总不计算观察值,则必须在绘制之前使用group_by(Group) + summarize(mean(value) / median(value))。然后使用stat = identityaes(x = Group, y = summary)summary 是您要显示的列

【讨论】:

  • 是的,我明白了,但是通过使用 stat="identity" 是否覆盖了 A 组中所有元素的条形?因此只显示最大值?谢谢
  • 你的代码中还有position = "dodge",这样同x位置的条就会相互闪避,并排显示。如果不进行此位置调整,同一组中的所有元素都将重叠。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-12
  • 2015-04-11
  • 2014-10-29
  • 2016-01-27
  • 2014-12-05
  • 1970-01-01
相关资源
最近更新 更多