百分比而不是ggplot中的计数

Percentage instead of count in ggplot

我刚刚开始编程。 我有这个数据框:

data1 = data.frame(NSE=c("A-B", "C", "D-E"), Percentage=c(68, 66, 63))

我做了这个条形图:

a = ggplot(data1, aes(x=NSE, y=Percentage))+
geom_bar(stat = "identity", width=0.6, fill = "red", color = "grey40", alpha = 5)+ 
geom_text(aes(label=Percentage), vjust=1.5, color="white", 
size=3)+
ggtitle("No se sintieron discriminados en los últimos 
doce meses, según NSE (en porcentaje)")+labs(y="", x="")+
theme(plot.title = element_text(color="black", size=10, face="bold"))+ylim(0,100)

它创建了三个对应于值 68、66 和 63 的条形图。但我希望条形图将这些值显示为百分比(68%、66%、63%)。我应该怎么做才能得到那个?

提前谢谢你。

使用 scales::percentscales::percent_format 可以这样实现:

library(ggplot2)
library(scales)

data1 = data.frame(NSE=c("A-B", "C", "D-E"), Percentage=c(68, 66, 63))

ggplot(data1, aes(x=NSE, y=Percentage))+
  geom_bar(stat = "identity", width=0.6, fill = "red", color = "grey40", alpha = 5)+ 
  geom_text(aes(label=scales::percent(Percentage, scale = 1, accuracy = 1)), vjust=1.5, color="white", 
            size=3)+
  scale_y_continuous(labels = scales::percent_format(scale = 1, accuracy = 1), limits = c(0,100)) +
  ggtitle("No se sintieron discriminados en los ultimos 
doce meses, segun NSE (en porcentaje)")+labs(y="", x="")+
  theme(plot.title = element_text(color="black", size=10, face="bold"))

reprex package (v0.3.0)

于 2020-08-02 创建

如果不使用 scales 包,可以简单地使用

function(x) paste0(round(x*100), "%)

geom_textlabel审美中,如下:

+ geom_text(aes(label=paste0(round(Percentage), "%")), vjust=1.5, color="white", 
size=3)

此外,在 scale_y_continuouslabels 参数中,也可以这样做,就像这样

+ scale_y_continuous(labels = function(x) paste0(round(x), "%"))