【发布时间】:2019-04-14 22:06:15
【问题描述】:
我想制作一个简单的条形图,我有一个变量 x (A,B,C,D) 分类变量,另一个用于填充的 y (YES, NO),以及一组观察结果,我想要显示一个填充的条形图,每列中都有百分比标签。
就这么简单:
到目前为止,ggplot 图层系统一直是个噩梦。在已经提出的问题中,我找不到任何解决方案。
x11()
ggplot(data=KS, aes(x=KS$main_category, fill=KS$state)) +
geom_bar(position="fill") +
scale_y_continuous(labels = percent) +
geom_text(aes(label = ..count.., group = KS$state),
stat = "count")
这是我目前得到的,用于定位的部分显示每个类别和状态的计数,为什么不能显示比例?并且我想避免操纵数据并向数据框添加内容。
非常感谢。
编辑:请求的数据框
library("ggplot2")
library("scales")
main_category=c('A','A','B','C','D','A','A','B','C','D','A','A','B','C','D','A','A','B','C','D')
state=c('Yes', 'No', 'Yes', 'Yes','Yes', 'No', 'Yes', 'Yes','Yes', 'No', 'Yes', 'Yes','Yes', 'No', 'Yes', 'Yes', 'No', 'No', 'No', 'No')
KS = data.frame(main_category, state)
编辑 2:
通过使用隐式 ggplot 变量,我能够在不操纵数据集的情况下找到自己的解决方案:
geom_text(aes( y=..count../tapply(..count.., ..x.. ,sum)[..x..], label=percent(..count../tapply(..count.., ..x.. ,sum)[..x..]) ),
stat="count", position=position_fill(0.5), vjust=0.5)
【问题讨论】:
-
当然,这至少与之前提出的问题非常相似。您应该展示您在搜索中找到的内容,并解释之前的答案中缺少的内容。
-
所问的任何问题都不是指计算观察值,而是根据一些我没有的预处理 y 轴数量应用百分比。 stackoverflow.com/questions/44724580/…
-
Please provide
KS中的部分或全部数据。我同意@42-,这个问题的许多变体之前已经被问过,我相信现有问题和答案的一些组合会回答这个问题。 -
我已经添加了 KS 数据框。
-
我故意拒绝接受 ggplot 活动应该受到“避免操纵数据”请求的约束,因为这是 ggplot 系统用户的明确期望。
标签: r ggplot2 data-visualization