Mus*_*Guy 8 r rounding ggplot2
我的代码生成此图:
代码:
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 = percent_format()) +
geom_text(aes(label = sprintf("%0.2f", areas$Difference * 100, "%"),
vjust = ifelse(Difference >= 0, -1.5, 1.5))) +
theme_classic()
Run Code Online (Sandbox Code Playgroud)
最近版本的ggplot2/scales包为scales::percent函数提供了参数,例如将百分比四舍五入为整数:
scale_y_continuous(labels = scales::percent_format(accuracy = 1L))
Run Code Online (Sandbox Code Playgroud)
这大致相当于round(x, 0L): 注意1代替0。
或两位数:
scale_y_continuous(labels = scales::percent_format(accuracy = 3L))
Run Code Online (Sandbox Code Playgroud)
有一个几乎重复的问题。在此处检查 Henrik 的答案:如何防止 scales::percent 增加小数
aes(label=paste(round(Difference*100,digits= 2),"%",sep=""))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11257 次 |
| 最近记录: |