首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R上用ggplot2生成紧凑的科学记数法

在R上用ggplot2生成紧凑的科学记数法
EN

Stack Overflow用户
提问于 2021-03-01 12:46:23
回答 1查看 38关注 0票数 0

我用ggplot2生成的图与左边的图类似,在y轴的每个刻度上都有完整的科学记数法。我怎样才能让它看起来更紧凑,就像右边的图一样,在角落里用红色圈出了科学记数法?

我没有在ggplot2包文档或堆栈溢出中看到过这一点。有没有人有变通办法?

科学记数法的两种格式

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-01 12:58:10

从类似的情节开始:

代码语言:javascript
复制
ggplot(mtcars, aes(wt, mpg * 1E-8)) +
  geom_point()

如果我们知道我们想要使用的比例,我们可以定义它,然后我们可以在进入的过程中缩放数据,或者更改y轴上的标签,看起来将是相同的,除了y轴标签(我们可以将其重命名为我们想要的任何名称):

代码语言:javascript
复制
divisor = 1E-8

ggplot(mtcars, aes(wt, mpg * 1E-8 / divisor)) +
  geom_point() +
  labs(title = formatC(divisor, format = "e", digits = 0))

代码语言:javascript
复制
ggplot(mtcars, aes(wt, mpg * 1E-8)) +
  geom_point() +
  scale_y_continuous(labels = function(x) x / divisor) +
  labs(title = formatC(divisor, format = "e", digits = 0))

编辑:

如果您还想要一个标题,您也可以使用

要在绘图区之外写入文本,然后向上移动标题,请执行以下操作:

代码语言:javascript
复制
ggplot(mtcars, aes(wt, mpg * 1E-8)) +
  geom_point() +
  scale_y_continuous(labels = function(x) x / divisor) +
  annotate("text", x = -Inf, y = Inf, hjust = 0, vjust = -0.5,
           label = formatC(divisor, format = "e", digits = 0)) +
  coord_cartesian(clip = "off") +
  labs(title = "Title here") +
  theme(plot.title = element_text(margin = margin(0,0,20,0)))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66416777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档