r - 仅在轴末端带有十次幂的 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 轴的最顶端。我怎样才能做到这一点?
解决方案
您可以将轴刻度标签别名为您想要的任何内容,然后用于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")
推荐阅读
- java - JavaFX ScrollPane:部分隐藏的滚动条
- javascript - 自定义分页滑块缺少 react.js 的配置文件
- regex - 关键字周围的所有字符,但停在空格处
- r - ggplot中的Shapefile:不可能用列的值填充多边形
- java - 如何以编程方式将滚动视图放在警报对话框中
- swift - GMS reverseGeocodeCoordinate 返回 statusCode 400 错误
- ruby-on-rails - 活动存储 - 废弃文件
- gremlin - Gremlin:如何将单个顶点周围的所有图结构放入子图中
- php - 为什么 PHP 文件在服务器运行时没有包含在文件中?
- scala - 将函数列表传递给稍后使用提供的数据执行的方法