R,ggplot:y轴上的小数

7

我想制作一个柱状图,类似于这个最小工作示例:

library(tidyverse)
library(ggplot2)

mtcars %>% 
  mutate(mpg=mpg/1000) %>% 
  ggplot(aes(x=cyl, y=mpg)) +
  geom_bar(stat="identity") +
  scale_y_continuous(labels = scales::percent)

我得到的是以下内容(请记住这是无意义的,但用于说明目的): enter image description here 现在,我想要将y轴上的小数替换为百分比(“30%”而不是“30.0%”)。我该怎么办? 我在这里找到了一个类似的问题(点击此处),但不能使函数NRPercent工作(并且无法在那里进行评论)。

1
请参考链接中的问题,以确认是否重复,并查看 ?scales::percent。您正在使用用于标签的函数会将值乘以100并添加百分号,因此默认情况下像0.0125这样的数字将输出为1.25%。有一个参数可以设置精度以舍弃小数点后的位数。 - camille
2个回答

24

有了新版本的scales,您可以使用:

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

2
这是一篇有用的帖子:如何在ggplot2中更改轴标签上小数位数?。以下是解决方案,已将百分比符号添加到值中。
mtcars %>% 
  mutate(mpg=mpg/1000) %>% 
  ggplot(aes(x=cyl, y=mpg*100)) +
  geom_bar(stat="identity") +
  scale_y_continuous("Percent", labels = function(x) paste0(sprintf("%.0f", x),"%"))

1
谢谢,已更新答案以包含百分号。 - Mike
这个可以运行;不过,第2行和第3行可以更清晰地写成 mutate(mpg) %>% ggplot(aes(x=cyl, y=mpg/10) - Lukas
1
@Lukas,如果是这样的话,根本不需要使用mutate!只需使用ggplot(mtcars, aes(........即可。 - Axeman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接