我正在尝试使用ggplot绘制条形图geom_bar()
,在x轴上具有一个变量,在Y轴上具有其计数,第三个变量作为图例,并且在每个图例中的百分比沿Y轴计数的图例。
我正在使用内置的mtcars
数据集作为代表。
library (ggplot2)
ggplot(data = mtcars, aes(x=cyl, y= ..count..)) +
geom_bar(aes(fill = factor(gear)))
我希望在每个图例中包含这些百分比,如果可能的话,以一种体面的方式。
prop.table(table(eight$gear))
3 5
0.8571429 0.1428571
prop.table(table(six$gear))
3 4 5
0.2857143 0.5714286 0.1428571
prop.table(table(four$gear))
3 4 5
0.09090909 0.72727273 0.18181818
有关此文档的列表为here
但是我到达了不能将y用作标签的地步,因为我是从ggplot特殊起始变量中获取的。
对不起,我无法上传图像,因为我是一个没有足够声誉可以发布图像的新手,但是运行mtcars代码将生成我想要的图像。
答案 0 :(得分:0)
我可能会分别设置%标签的格式,并将它们作为第二个数据框添加到图表中。
使用dplyr格式化:
library(dplyr)
legendLabels <- mtcars %>%
group_by(cyl, gear) %>%
summarise(count = n()) %>%
arrange(cyl, desc(gear)) %>%
mutate(percent = round(count/sum(count)*100,2),
yPos = cumsum(count))
以及更新后的图表:
ggplot(data = mtcars, aes(x=cyl, y= ..count..)) +
geom_bar(aes(fill = factor(gear))) +
geom_text(data = legendLabels, aes(x=cyl, y=yPos-0.5, label=paste0(percent,"%")))
提供此图表: http://phpseclib.sourceforge.net/interop.html#rsaencpkcs1,p1phpseclib,p2openssl
希望这就是您想要的。