Как печатать строчную греческую дельту курсивом [названия осей ggplot] - PullRequest
1 голос
/ 12 ноября 2019

Я строю данные стабильных изотопов в R с пакетом ggplot2 и хочу, чтобы строчные символы дельты на заголовках осей были напечатаны курсивом. Я использую выражение () для построения заголовков осей, но символ дельты не будет печататься курсивом при вызове как «дельта» или печатается как d , если я использую юникод '\ u03B4'

Немного предыстории: символ дельта ( δ ) является допустимым символом количества СИ и поэтому должен всегда печататься курсивом. См. Коплен, ТБ (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()

дает следующий график: enter image description here

Аследующий вопрос: как мне сохранить график на устройстве 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,: Метрическая информация недоступна для этого семейства / устройства

1 Ответ

1 голос
/ 12 ноября 2019

Вы можете сделать это с помощью 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()
  )

Создано в 2019-11-12 пакетом Представить (v0.3.0)

...