gpt4 book ai didi

r - 将百分比标签添加到堆叠条形图

转载 作者:行者123 更新时间:2023-12-03 18:27:29 26 4
gpt4 key购买 nike

我已经成功地在 R 中制作了一个堆叠条形图,其中几个不同类别的百分比加起来为 100%。我在这里制作了一个示例数据框。

example.Category<- c("Cat1","Cat2","Cat3","Cat4","Cat5","Cat6")
percent.good <- c(.25,.29,.45,.5,.8,.82)
example.data <- data.frame(example.Category,percent.good)
example.data$percent.bad <- (1-example.data$percent.good)

数据框看起来像这样。
     example.Category percent.good percent.bad
1 Cat1 0.25 0.75
2 Cat2 0.29 0.71
3 Cat3 0.45 0.55
4 Cat4 0.50 0.50
5 Cat5 0.80 0.20
6 Cat6 0.82 0.18

然后我使用 reshape 包中的melt来得到这个......
example.melt <- melt(example.data, id.vars="example.Category")

example.Category variable value
1 Cat1 percent.good 0.25
2 Cat2 percent.good 0.29
3 Cat3 percent.good 0.45
4 Cat4 percent.good 0.50
5 Cat5 percent.good 0.80
6 Cat6 percent.good 0.82
7 Cat1 percent.bad 0.75
8 Cat2 percent.bad 0.71
9 Cat3 percent.bad 0.55
10 Cat4 percent.bad 0.50
11 Cat5 percent.bad 0.20
12 Cat6 percent.bad 0.18

然后我使用 ggplot 制作了一个显示这些百分比的堆叠条形图。
ggplot(example.melt, aes(x=example.Category, y=value, fill = variable)) +
geom_bar(position = "fill", stat = "identity",color='black',width=0.9) +
scale_y_continuous(labels = scales::percent) +
geom_text(aes(label = paste0((example.data$percent.good && example.data$percent.bad)*100), '%'),position = position_dodge(width = .9),size = 3)

这产生了这个图,这是我想要的,除了它的标签方式。
Graph

我想要做的是在每个堆叠条上为每种颜色设置百分比标签,我不知道该怎么做,并且确定我没有做对。我设法做的就是以某种方式创建另一个大约有 100 个的类别。我如何让百分比标 checkout 现在这个图表上,针对条形的每个部分?

我希望这不是多余的/之前问过的。谢谢。

最佳答案

你可以做这样的事情......

#set positions for labels
example.melt$labelpos <- ifelse(example.melt$variable=="percent.bad",
example.melt$value/2, 1 - example.melt$value/2)
ggplot(example.melt, aes(x=example.Category, y=value, fill = variable)) +
geom_bar(position = "fill", stat = "identity",color='black',width=0.9) +
scale_y_continuous(labels = scales::percent) +
#use positions to plot labels
geom_text(aes(label = paste0(100*value,"%"),y=labelpos),size = 3)

enter image description here

关于r - 将百分比标签添加到堆叠条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44724580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com