如何覆盖ggplot2的坐标轴格式?

9

当你选择对数刻度时,ggplot2会将间隔格式化为10^x。我希望它不要这样做。例如,下面的代码应该显示一个在1、2、5等处有刻度的图形,而不是10^0、10^0.3、10^0.69等。

library(ggplot2)
dfr <- data.frame(x = 1:100, y = rlnorm(100))
breaks <- as.vector(c(1, 2, 5) %o% 10^(-1:1))
p1 <- ggplot(dfr, aes(x, y)) + geom_point() + scale_y_log10(breaks = breaks)
print(p1)

我猜在scale_y_log10中添加一个formatter参数就可以解决问题,但我不确定该参数应该填什么,也不知道相关选项在哪里有文档说明。

2个回答

8

scale_y_log10(breaks = breaks, labels = breaks) 这个命令应该可以达到效果。


4
从ggplot2 0.9.0版本开始,这种将轴标签格式化为10^0的行为不再是默认值。问题中的代码现在可以得到所需的结果。
library(ggplot2)
dfr <- data.frame(x = 1:100, y = rlnorm(100))
breaks <- as.vector(c(1, 2, 5) %o% 10^(-1:1))
p1 <- ggplot(dfr, aes(x, y)) + geom_point() + scale_y_log10(breaks = breaks)
print(p1)

enter image description here


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