gpt4 book ai didi

r - 如何使用 stat ="count"在 ggplot2 中用计数或百分比标记条形图?

转载 作者:行者123 更新时间:2023-12-04 01:14:56 28 4
gpt4 key购买 nike

我正在尝试生成带有数据标签的堆积柱形图。
我能够生成图表,但无法找到输入数据标签的方法。我试过 geom_text()但它一直要求我输入一个 y 标签(如果你看到 ggplot 代码不存在)。我也尝试添加 geom_text(stat = "count")但这也给了我一个错误说

"Error: geom_text requires the following missing aesthetics: y and label".


PS - 我知道我需要将 y 轴重命名为百分比。我也想弄清楚如何有更多对比色
ggplot(property,
aes(x=Bedrooms.New, fill=Property.Type.)) +
geom_bar(position = "fill") +
scale_x_discrete(name = "Number of Bedrooms",
limits = sort(factor(unique(property$Bedrooms.New))))
我在下面添加了一张图片,看看我现在的输出是什么!
enter image description here

最佳答案

正如错误消息告诉您的那样,geom_text需要 label AES。在您的情况下,您想用一个变量来标记条形,该变量不是您的数据集的一部分,而是由 stat="count" 计算出来的。 ,即 stat_count .
计算变量可以通过 ..NAME_OF_COMPUTED_VARIABLE.. 访问. ,例如获取计数使用 ..count..作为变量名。顺便说一句:计算变量的列表可以在 stat 或 geom 的帮助包中找到,例如?stat_count使用 mtcars作为示例数据集,您可以标记 geom_bar像这样:

library(ggplot2)

ggplot(mtcars, aes(cyl, fill = factor(gear)))+
geom_bar(position = "fill") +
geom_text(aes(label = ..count..), stat = "count", position = "fill")

另外两个注意事项:
  • 要获得正确的标签位置,您必须设置 position参数匹配 geom_bar 中使用的参数,例如position="fill"在你的情况下。
  • 虽然计数很容易,但用百分比标记是一个不同的问题。默认 stat_count按组计算百分比,例如通过 fill 设置的组AES。这些可以通过 ..prop.. 访问.如果您希望以不同的方式计算百分比,则必须手动进行。

  • 例如,如果您希望每个条形的百分比总和为 100%,则可以这样实现:

    library(ggplot2)

    ggplot(mtcars, aes(cyl, fill = factor(gear)))+
    geom_bar(position = "fill") +
    geom_text(aes(label = ..count.. / tapply(..count.., ..x.., sum)[as.character(..x..)]), stat = "count", position = "fill")

    关于r - 如何使用 stat ="count"在 ggplot2 中用计数或百分比标记条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63653351/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com