使用新版本的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/