gpt4 book ai didi

r - 在堆积条形图 (ggplot2) 中标记选定的百分比值

转载 作者:行者123 更新时间:2023-12-04 18:08:43 28 4
gpt4 key购买 nike

我想在堆积条形图上放置百分比标签。但是,我只想为每个条标记最大的 3 个百分比。我浏览了很多关于 SO 的有用帖子(例如:123),这是我到目前为止所取得的成就:

library(ggplot2)
groups<-factor(rep(c("1","2","3","4","5","6","Missing"),4))
site<-c(rep("Site1",7),rep("Site2",7),rep("Site3",7),rep("Site4",7))
counts<-c(7554,6982, 6296,16152,6416,2301,0,
20704,10385,22041,27596,4648, 1325,0,
17200, 11950,11836,12303, 2817,911,1,
2580,2620,2828,2839,507,152,2)
tapply(counts,site,sum)
tot<-c(rep(45701,7),rep(86699,7), rep(57018,7), rep(11528,7))
prop<-sprintf("%.1f%%", counts/tot*100)

data<-data.frame(groups,site,counts,prop)

ggplot(data, aes(x=site, y=counts,fill=groups)) + geom_bar()+
stat_bin(geom = "text",aes(y=counts,label = prop),vjust = 1) +
scale_y_continuous(labels = percent)

我想在这里插入我的输出图像,但似乎没有足够的声誉......但上面的代码应该能够产生情节。

那么我怎样才能在每个条上只标记最大的 3 个百分比呢?另外,对于图例,我可以更改类别的顺序吗?例如把“失踪”放在第一位。这在这里不是什么大问题,但对于我的真实数据集,图例中类别的顺序确实让我很困扰。

我是这个网站的新手,所以如果我的问题有任何不清楚的地方,请告诉我,我会解决的。感谢任何回答/评论!谢谢!

最佳答案

我以一种古怪的方式做到了这一点。它不是那么优雅。

无论如何,我使用了 plyr 包,因为拆分-应用-组合策略似乎是实现这一目标的方式。

我使用代表每个站点百分比的变量 perc 重新创建了您的数据框。然后,对于每个站点,我只保留 prop 的 3 个最大值,并将其余值替换为 ""

# I added some variables, and added stringsAsFactors=FALSE
data <- data.frame(groups, site, counts, tot, perc=counts/tot,
prop, stringsAsFactors=FALSE)

# Load plyr
library(plyr)
# Split on the site variable, and keep all the other variables (is there an
# option to keep all variables in the final result?)
data2 <- ddply(data, ~site, summarize,
groups=groups,
counts=counts,
perc=perc,
prop=ifelse(perc %in% sort(perc, decreasing=TRUE)[1:3], prop, ""))

# I changed some of the plotting parameters
ggplot(data2, aes(x=site, y=perc, fill=groups)) + geom_bar()+
stat_bin(geom = "text", aes(y=perc, label = prop),vjust = 1) +
scale_y_continuous(labels = percent)

enter image description here

编辑:看起来您的比例在您的原始绘图代码中是错误的。它给了我 y 轴上 7500000% 的结果,这对我来说似乎有点偏离......

编辑:我修正了代码。

关于r - 在堆积条形图 (ggplot2) 中标记选定的百分比值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20011266/

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