我的代码生成此图:
代码:
ggplot(areas, aes(x = RETAILER, y = Difference), label=sprintf("%0.2f", round(areas$Difference, digits = 2))) +
geom_bar(stat = "identity", aes(fill = RETAILER), colour = "black") +
scale_y_continuous("Percentage", labels = percent_format()) +
geom_text(aes(label = paste(Difference * 100, "%"),
vjust = ifelse(Difference >= 0, -1.5, 1.5))) +
theme_classic()
Run Code Online (Sandbox Code Playgroud)
我找到了允许将数据标签正确定位在每个条形上方或下方的代码,但我似乎无法将值四舍五入到小数点后两位。
我已经尝试过round(areas, 2)以及sprintf("%0.2f")其他事情,但我尝试的任何东西似乎都不起作用,而且我确信我错过了一些简单的东西。
我哪里错了?
更新:
在罗兰的“鼓励”下,我现在几乎解决了这个问题;现在的问题是我现在丢失了百分比符号:
我如何让他们回来?
更新代码:
ggplot(areas, aes(x = RETAILER, y = Difference)) +
geom_bar(stat = "identity", aes(fill = RETAILER), colour = "black") +
scale_y_continuous("Percentage", labels = …Run Code Online (Sandbox Code Playgroud) 我需要固定的小数位数(在这种情况下为两个),但我无法使其工作,我知道使用round和accuracy功能,但它似乎对我不起作用
代码:
library(ggplot2)
ggplot(mtcars, aes(factor(cyl))) +
geom_bar(color = "steelblue", fill = "#00AFBB", na.rm = T) +
scale_fill_discrete(drop=FALSE) +
scale_x_discrete(drop=FALSE) +
geom_text(aes(label=scales::percent(round(..count../sum(..count..),4))),
stat='count',vjust = -0.5, size = 4)
Run Code Online (Sandbox Code Playgroud)