首页 > 解决方案 > 仅在轴末端带有十次幂的 Y 轴标签

问题描述

我正在用 ggplot2 绘制一些时间序列。y 轴上的值非常小(0.000000043)。我正在尝试减少位数,使其看起来更好。我想在 y 轴上有 3 个不同的值(最小值、最大值和中值)。如果我将这些值四舍五入(例如,使用 3 个小数点),那么所有这 3 个数字都会变为零。

到目前为止我所做的是:

g<- g + scale_y_continuous(breaks = y_values,label= function(x) {ifelse(x==0, "0", parse(text=gsub("[+]", "", gsub("e", " %*% 10^", scientific_format()(x)))))} ) 

这将创建 43x10^-9 形式的值。

我希望刻度上只有 43 个,而 10^-9 位于 y 轴的最顶端。我怎样才能做到这一点?

标签: rggplot2

解决方案


您可以将轴刻度标签别名为您想要的任何内容,然后用于annotate()将文本标签放在您想要的任何位置:

g + scale_y_continuous(breaks = y_values, labels = y_values * 1e9) +
    annotate("text", 
             x = -0.5,                 # or whatever you need it to be
             y = 50e-9,                # or whatever you need it to be
             label = "*10^-9")

推荐阅读