我们如何将y轴更改为百分比?我可以改变y轴范围,但我无法改变它的百分比。
答案 0 :(得分:147)
使用:
+ scale_y_continuous(labels = scales::percent)
或者,指定百分比的格式参数:
+ scale_y_continuous(labels = scales::percent_format(accuracy = 1))
(命令labels = percent
自ggplot2版本2.2.1起已过时)
答案 1 :(得分:38)
ggplot2
和scales
个包可以做到这一点:
y <- c(12, 20)/100
x <- c(1, 2)
library(ggplot2)
library(scales)
myplot <- qplot(as.factor(x), y, geom="bar")
myplot + scale_y_continuous(labels=percent)
似乎stat()
选项已被取消,导致错误消息。试试这个:
library(scales)
myplot <- ggplot(mtcars, aes(factor(cyl))) +
geom_bar(aes(y = (..count..)/sum(..count..))) +
scale_y_continuous(labels=percent)
myplot
答案 2 :(得分:34)
原则上,您可以将任何重新格式化功能传递给labels
参数:
+ scale_y_continuous(labels = function(x) paste0(x*100, "%")) # Multiply by 100 & add %
或
+ scale_y_continuous(labels = function(x) paste0(x, "%")) # Add percent sign
可重复的例子:
library(ggplot2)
df = data.frame(x=seq(0,1,0.1), y=seq(0,1,0.1))
ggplot(df, aes(x,y)) +
geom_point() +
scale_y_continuous(labels = function(x) paste0(x*100, "%"))
答案 3 :(得分:0)
从上面的@Deena借来的,对标签的功能修改比您想象的要灵活得多。例如,我有一个ggplot,其中计数变量的分母为140。因此,我使用了她的示例:
scale_y_continuous(labels = function(x) paste0(round(x/140*100,1), "%"), breaks = seq(0, 140, 35))
这使我能够在140分母上得到百分比,然后以25%的增量而不是默认的怪异数字打破比例。这里的关键是小数位数的中断仍然由原始计数而不是您的百分比来设置。因此,分隔符必须从零到分母值,并且“分隔符”中的第三个参数是分母除以所需的标签分隔符数量(例如140 * 0.25 = 35)。