首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R的ggplot中使用atop、\n等生成两行复杂的y轴标题

在R的ggplot中使用atop、\n等生成两行复杂的y轴标题
EN

Stack Overflow用户
提问于 2021-06-02 00:57:25
回答 1查看 24关注 0票数 0

我试图在R的ggplot中的y轴标签中生成两行,其中第二行有一些相对复杂的文本,这似乎使得在两行上打印变得困难。

在一行代码中,我使用bquote命令可以很好地打印此脚本:

图1:

代码语言:javascript
复制
ggplot(data = iris, aes(x = Sepal.Width, y = Sepal.Length)) + geom_point() + 
  ylab(bquote('Efflux ('*mu~ 'mol' ~CO[2]~ m^-2~s^-1*')')) 

而且,对于相对简单的文本,我可以使用ylab中的\n特性来生成两行代码:

图2:

代码语言:javascript
复制
ggplot(data = iris, aes(x = Sepal.Width, y = Sepal.Length)) + geom_point() + 
  ylab("Efflux \n Carbon Dioxide")

但是,在尝试使用bquote中的顶部功能时,我一直在努力弄清楚如何使用逗号、引号等来正确打印这两行y轴标签:

代码语言:javascript
复制
ggplot(data = iris, aes(x = Sepal.Width, y = Sepal.Length)) + geom_point() + 
  ylab(bquote(atop("Efflux", ('*mu~ 'mol' ~CO[2]~ m^-2~s^-1*'))))

这将打印一个错误,我知道这与引号的位置有关。有没有人知道如何在两行上打印这个更复杂的文本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-02 01:12:59

您可以尝试使用ggtext包中的element_markdown。这使您可以使用markdown (或html)来生成所需的换行符、符号、下标和上标,而无需求助于bquote,后者很难处理多行输入。您甚至可以用斜体显示单位,如下例所示:

代码语言:javascript
复制
library(ggplot2)
library(ggtext)

ggplot(data = iris, aes(x = Sepal.Width, y = Sepal.Length)) + 
  geom_point() + 
  ylab("Efflux<br><i>(&mu;mol CO<sub>2</sub> m<sup>-2</sup>s<sup>-1</sup>)</i>") +
  theme(axis.title.y = element_markdown())

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

https://stackoverflow.com/questions/67793041

复制
相关文章

相似问题

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