我们怎样才能把 y 轴改成百分比呢?我可以改变 y 轴的范围,但是我不能做到百分比。
ggplot2和 scales软件包可以做到这一点:
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()选项已被取消,导致错误消息。请尝试以下操作:
stat()
library(scales) myplot <- ggplot(mtcars, aes(factor(cyl))) + geom_bar(aes(y = (..count..)/sum(..count..))) + scale_y_continuous(labels=percent) myplot
用途:
+ scale_y_continuous(labels = scales::percent)
或者,为百分比指定格式化参数:
+ scale_y_continuous(labels = scales::percent_format(accuracy = 1))
(自 ggplot2版本2.2.1以来,命令 labels = percent已过时)
labels = percent
原则上,您可以将任何重新格式化函数传递给 labels参数:
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, "%"))
从上面的@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)。