Убрать интервал вокруг курсива в метке оси ggplot

Копирую сюжет ниже. Однако, когда я выделяю n на этикетке курсивом, после него добавляется пробел. Как можно контролировать интервал между курсивом? Вот минимальная версия кода:

ggplot(data.frame()) + 
    labs(labs(x=expression("Proportion of "~italic(n)-"gram Model (1-"*gamma*")")))

Это фактический сюжет:

enter image description here

Полный код (данные слишком велики для публикации):

ggplot(all_pplx, aes(x=(1-Weight), y=perplexity_val)) +
  geom_line(aes(color=`n-gram`)) +
  scale_y_log10() +
  # scale_x_reverse() +
  labs(title="",
       x=expression("Proportion of "~italic("n")-"gram Model ("*gamma*")"),
       y="Perplexity") +
  theme(axis.text.x = element_text(size=12),
        axis.text.y = element_text(hjust = 1, size=12),
        axis.title.x = element_text(size=12,face="bold"),
        axis.title.y = element_text(size=12),
        plot.title = element_text(hjust = 0.5, size=12),
        legend.position = c(0.15, 0.7), 
        legend.background = element_rect(color = "black", 
                                         fill = "grey90", 
                                         size = .2, 
                                         linetype = "solid")) +
  ggsave('emnlp_new-exp1.pdf', device='pdf')

Сделайте свой пример минимальный и воспроизводимый. У нас нет ваших данных. В этом случае сам график не имеет значения, поэтому вы можете сделать гораздо более простой пример, например ggplot(data.frame()) + labs(labs(x=expression(italic(n)-"gram (1-"*gamma*")")))

alistaire 13.09.2018 20:29

Спасибо! Я никогда не понимал, что могу использовать data.frame()

Adam_G 13.09.2018 20:32

Вы можете использовать paste() с выражениями plotmath, чтобы построить это: expression(paste("Proportion of ", italic("n"), "-gram Model ", (1-gamma)))

aosmith 13.09.2018 21:40
1
3
345
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы хотите, чтобы - интерпретировался как дефис, а не как знак минус, поэтому включите его в строковую часть. Затем соедините строку курсивом с *, который помещает символы рядом друг с другом, вместо ~, который оставляет пробел.

С другой стороны, (1-γ) должен должен быть отформатирован как математический.

library(ggplot2)

ggplot(data.frame()) + 
    labs(x = expression("Proportion of"~italic(n)*"-gram Model"~(1-gamma)))

Документы на ?plotmath.

Другие вопросы по теме