gpt4 book ai didi

r - 让ggplot2在顶部只写一次 Axis 标签的数量级

转载 作者:行者123 更新时间:2023-12-01 04:55:19 25 4
gpt4 key购买 nike

我想做 ggplot2只将科学记数法的第一部分写到 Axis 上,然后在 Axis 上添加 $x 10^n$ 以表示数量级。有没有一个功能可以做到这一点?

这是一个带有 hack 的 MWE 来说明我的意思:

ggplot(data = data.frame(x = 1:10, y = seq(1, 2, l = 10)*1000), aes(x,y)) + geom_line()

not scaled y axis

而我想要的是:
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"))

scaled y axis

作为一个附带问题,我注意到当刻度标签很大时, Axis 标签会很快接近刻度标签。有没有办法在它们之间设置自动间距?

最佳答案

如果您想对不同的数据使用类似的标签规则,这里有一种更自动化的方式来执行您的 hack。它将计算出适当的 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)

enter image description here

关于r - 让ggplot2在顶部只写一次 Axis 标签的数量级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37678387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com