如何覆盖ggplot2的轴格式?

时间:2010-05-25 17:20:04

标签: r ggplot2

当您选择对数刻度时,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)

我想在formatter添加一个scale_y_log10参数可以解决这个问题,但我不确定在论证中放什么,或者可能会记录选项。

2 个答案:

答案 0 :(得分:8)

scale_y_log10(breaks = breaks, labels = breaks应该可以解决问题。

答案 1 :(得分: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