如何使用 stat="count" 在 ggplot2 中用计数或百分比标记条形图?
How to use stat="count" to label a bar chart with counts or percentages in ggplot2?
我正在尝试生成带有数据标签的堆积柱形图。
我可以生成图表,但无法找到输入数据标签的方法。我试过 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))))
我在下面添加了一张图片,看看我现在的输出是什么!
正如错误消息告诉您的那样,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")
我正在尝试生成带有数据标签的堆积柱形图。
我可以生成图表,但无法找到输入数据标签的方法。我试过 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))))
我在下面添加了一张图片,看看我现在的输出是什么!
正如错误消息告诉您的那样,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")