1

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

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

一些可重现的代码:

require(ggplot2)

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 = expression(italic(delta)^13*C~("\211"~VPDB)),
       y = expression(italic("\u03B4")^13*C[DIC]~("\211"~VPDB))) +
  theme_bw()

给出以下情节: 在此处输入图像描述

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

ggsave(filename = 'isotope_plot.svg', width = 5, height = 3, units = "in")

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

4

1 回答 1

4

你可以用 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()
  )

reprex 包(v0.3.0)于 2019 年 11 月 12 日创建

于 2019-11-12T11:00:43.777 回答