我有一个Excel文件,其中包含有关不同性别的数据。我正在用read.csv阅读它。我正在使用ggplot绘制该数据的条形图。
这是数据:
> dput(dat.absolventen$Geschlecht)
structure(c(1L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L,
1L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("männlich",
"weiblich"), class = "factor")
这是我的代码:
ggplot(data = d, aes(x=Geschlecht,y=(..count..)/sum(..count..))) +
geom_bar(
fill="steelblue"
) +
geom_text(aes(label = sprintf("%0.1f%%",(..count..)/sum(..count..)*100)),
stat = "count",
colour = "white",
vjust = +2,
fontface = "bold"
)
这给了我足够好的图表。有9位女性和32位男性。 我可以了解一下每个条形图中的百分比。但是,我想显示栏内男性的百分比,栏外或不在栏顶部的女性百分比(基本上,如果栏太短,则将标签移到外面)。
我知道我可以使用ifelse(),但我不知道如何将其用于每个值,即男性和女性的总数。如果在定义aes(label = ...)时使用ifelse(),则将条件应用于整个列。我希望它测试每个酒吧,即男性和女性,然后根据小于或大于15的标准进行调整。
我尝试使用
ifelse(..count.. >15, -2, +2)
但是这给了我'..count .. not found'的错误。而且我不确定为什么会这样说,因为在定义美学时,我使用的是..count ..并且在那里起作用。
以前有很多类似的问题,但是我一直无法从他们那里得到任何帮助,这就是为什么我不得不再次询问这个特殊情况的原因。问候。
答案 0 :(得分:2)
我认为,这个问题是您只能在aes()内部访问..count..。您无法将其传递给调整,因为它尚未定义。这是一个hacky解决方案。基本上,我根据分组因子表找出ggplot之外的调整,将其称为ListView.builder
,并将该信息提供给ggplot。
adj