问题描述
我能够生成图表,但无法找到输入数据标签的方法。我已经尝试过geom_text()
,但是它一直要求我输入y标签(如果您看到ggplot代码不存在)。我也尝试添加geom_text(stat = "count")
,但这也给我一个错误提示
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,fill = factor(gear)))+
geom_bar(position = "fill") +
geom_text(aes(label = ..count.. / tapply(..count..,..x..,sum)[as.character(..x..)]),position = "fill")