如何以斜体打印小写希腊三角洲 [ggplot 轴标题]

Jor*_*dan 2 expression r ggplot2 italic ggtext

我正在使用 ggplot2 包在 R 中绘制稳定同位素数据,并希望在轴标题上以斜体显示小写的 delta 符号。我正在使用 expression() 构建轴标题,但 delta 符号在称为“delta”时不会以斜体打印,或者如果我使用 unicode\'\\u03B4\' 则不会打印为d

\n\n

一点背景知识:符号 delta ( \xce\xb4 ) 是合法的 SI 数量符号,因此应始终以斜体字体打印。参见 Coplen, TB (2011)。稳定同位素比和气体比测量结果表达的指南和推荐术语。质谱快速通讯25(17),2538-2560。doi:10.1002/rcm.5129\n https://onlinelibrary.wiley.com/doi/full/10.1002/rcm.5129

\n\n

一些可重现的代码:

\n\n
require(ggplot2)\n\nset.seed(20)\ndf <- data.frame(d13C = rnorm(20, -23, 5),\n                 DIC = rnorm(20, 4, 0.2),\n                 d13CDIC = rnorm(20, -8, 2))\n\nggplot(df, aes(x = d13C, y = d13CDIC)) +\n  geom_point(aes(fill = DIC), pch = 21, cex = 5) +\n  labs(x = expression(italic(delta)^13*C~("\\211"~VPDB)),\n       y = expression(italic("\\u03B4")^13*C[DIC]~("\\211"~VPDB))) +\n  theme_bw()\n
Run Code Online (Sandbox Code Playgroud)\n\n

给出以下图:\n在此输入图像描述

\n\n

后续问题:\n如何将绘图保存到 svg 设备?使用 ggsave 保存为 .png 时,它可以正确绘制。但是,在绘制到 .svg 设备时出现以下错误:

\n\n
ggsave(filename = \'isotope_plot.svg\', width = 5, height = 3, units = "in")\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x,\nx$y, 中的错误:此系列/设备的指标信息不可用

\n
\n

Cla*_*lke 5

您可以使用 ggtext 来完成此操作。也可能使编写标签的整个代码变得更简单。

library(ggplot2)
library(ggtext) # remotes::install_github("clauswilke/ggtext")

set.seed(20)
df <- data.frame(d13C = rnorm(20, -23, 5),
                 DIC = rnorm(20, 4, 0.2),
                 d13CDIC = rnorm(20, -8, 2))

ggplot(df, aes(x = d13C, y = d13CDIC)) +
  geom_point(aes(fill = DIC), pch = 21, cex = 5) + 
  labs(
    x = "*&delta;*<sup>13</sup>C (&permil; VPDB)",
    y = "*&delta;*<sup>13</sup>C<sub>DIC</sub> (&permil; VPDB)"
  ) +
  theme_bw() +
  theme(
    axis.title.x = element_markdown(),
    axis.title.y = element_markdown()
  )
Run Code Online (Sandbox Code Playgroud)

由reprex 包(v0.3.0)于 2019-11-12 创建