Cle*_*ter 5 label axis r ggplot2
我想ggplot2只将科学记数法的第一部分写到轴上,然后在轴的顶部添加一个 $x 10^n$ 数量级。有没有一个功能可以做到这一点?
这是一个带有 hack 的 MWE 来说明我的意思:
ggplot(data = data.frame(x = 1:10, y = seq(1, 2, l = 10)*1000), aes(x,y)) + geom_line()
Run Code Online (Sandbox Code Playgroud)
而我想要的是:
ggplot(data = data.frame(x = 1:10, y = seq(1, 2, l = 10)*1000), aes(x,y)) + geom_line() +
scale_y_continuous(breaks = c(1, 1.25, 1.5, 1.75, 2, 2.05)*1000, label = c(1, 1.25, 1.5, 1.75, 2, "x 10^3"))
Run Code Online (Sandbox Code Playgroud)
作为一个附带问题,我注意到当刻度标签很大时,轴标签会很快接近刻度标签。有没有办法在它们之间设置自动间距?
如果您想对不同的数据使用类似的标签规则,这里有一种更自动化的方法来执行您的黑客攻击。它将计算出适当的 10 次方来使用并将其应用于标签:
y_breaks = pretty_breaks()(data$y)
y_max_exp = floor(log10(max(y_breaks)))
y_breaks = c(y_breaks, max(y_breaks) * 1.025)
y_labels = if_else(y_breaks == max(y_breaks),
paste0("x 10^", y_max_exp),
as.character(y_breaks / (10^y_max_exp)))
ggplot(data, aes(x,y)) + geom_line() +
scale_y_continuous(breaks = y_breaks, label = y_labels, minor_breaks = NULL)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
486 次 |
| 最近记录: |