使用新版本的ggplot2和scales,我无法弄清楚如何以科学计数法获取轴标签。例如:

x <- 1:4
y <- c(0, 0.0001, 0.0002, 0.0003)

dd <- data.frame(x, y)

ggplot(dd, aes(x, y)) + geom_point()

给我

我希望轴标签为0、5 x 10 ^ -5、1 x 10 ^ -4、1.5 x 10 ^ -4等。我无法找出scale_y_continuous()math_format()的正确组合(至少我认为这些是我所需要的。
scale_y_log10()日志可转换轴,我不需要。 scale_y_continuous(label = math_format())只是给我10 ^ 0、10 ^ 5e-5等。我明白了为什么后者会得到该结果,但这不是我想要的。

我正在使用ggplot2_0.9.1和scales_0.2.1

最佳答案

我适应了布莱恩的答案,我想我明白了你的追求。

只需将一个parse()添加到science_10()函数(并将'x'更改为正确的'times'符号),就可以得到以下结果:

x <- 1:4
y <- c(0, 0.0001, 0.0002, 0.0003)

dd <- data.frame(x, y)

scientific_10 <- function(x) {
  parse(text=gsub("e", " %*% 10^", scales::scientific_format()(x)))
}

ggplot(dd, aes(x, y)) + geom_point()+scale_y_continuous(label=scientific_10)

您可能仍想优化该功能,使其更优雅地处理0,但我想就是这样!

关于r - 如何使用ggplot2和scale的指数格式化轴标签?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10762287/

10-12 17:47