gpt4 book ai didi

r - 如何在ggplot2中将百分比四舍五入到小数点后两位

转载 作者:行者123 更新时间:2023-12-03 16:55:05 26 4
gpt4 key购买 nike

我的代码生成此图:

enter image description here

代码:

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()

我找到了允许将数据标签正确定位在每个条形上方或下方的代码,但我似乎无法将值四舍五入到小数点后两位。

我试过 round(areas, 2)sprintf("%0.2f")除其他外,但我尝试的任何内容似乎都不起作用,而且我确信我错过了一些简单的东西。

我哪里错了?

更新:

在罗兰的“鼓励”下,我现在几乎解决了这个问题;现在的问题是我现在丢失了百分比符号:

enter image description here

我如何让他们回来?

更新代码:
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()

最佳答案

ggplot2/scales 的最新版本包为 scales::percent 提供参数函数,例如将百分比四舍五入为整数:

scale_y_continuous(labels = scales::percent_format(accuracy = 1L))

这大致相当于 round(x, 0L) : 注意 1而不是 0 .

或两位数:
scale_y_continuous(labels = scales::percent_format(accuracy = 3L))

有一个几乎重复的问题。在此处查看 Henrik 的回答: How to prevent scales::percent from adding decimal

关于r - 如何在ggplot2中将百分比四舍五入到小数点后两位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45799000/

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