РЕШЕНИЕ: Как объединить несколько шрифтов и переменных в заголовок ggplot? - PullRequest
0 голосов
/ 06 мая 2020

Этот меня всех озадачил!

Я пытаюсь создать заголовок для ggplot, который будет полужирным, но с жирным шрифтом c и оценивает переменную.

В приведенном ниже коде я проиллюстрировал пример построения случайно сгенерированных нормально распределенных данных. Среднее значение, закодированное переменной mu, принимает значение 5. В идеале заголовок сюжета, закодированный как fig_title, должен выглядеть как normal, mu = 5 , но я получаю normal, mu = 5.

Также есть предложения по выделению жирным шрифтом всей строки (в отличие от отдельных компонентов)?

Большое спасибо!

~ jat

# The mean
mu <- 5

# Randomly distributed values
y <- rnorm(100, mean=mu)

# My attempt at the plot title.
fig_title <- as.expression(bquote(bold('normal, ')~bolditalic('mu')~bold('=')~bold(.(mu))))

# Associated ggplot
ggplot(data.table(Y=y), aes(x=Y)) +
  geom_histogram() +
  ggtitle(fig_title)

enter image description here

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Пакет ggtext имеет element_markdown(), который позволяет отображать код уценки в любом элементе ggplot2.

library(ggplot2)
library(ggtext)
library(data.table)

mu <- 5

y <- rnorm(100, mean = mu)

fig_title <- 'normal, *mu* = 5'

ggplot(data.table(Y = y), aes(x = Y)) +
  geom_histogram() +
  ggtitle(fig_title) +
  theme(plot.title = element_markdown())

Особенность ggtext заключается в том, что он позволяет вам намного больше стилизовать, например, изменить часть цвета текста.

fig_title <- 'normal, <span style="color:red">*mu*</span> = 5'

ggplot(data.table(Y = y), aes(x = Y)) +
  geom_histogram() +
  ggtitle(fig_title) +
  theme(plot.title = element_markdown())

1 голос
/ 06 мая 2020

Вы были очень близки. Он работает, когда вы конвертируете mu в символ. Я немного упростил, сгруппировав последний полужирный блок.

library(ggplot2)
library(data.table)
# The mean
mu <- 5

# Randomly distributed values
y <- rnorm(100, mean=mu)

# My attempt at the plot title.

fig_title <- as.expression(bquote(bold('normal, ')~bolditalic('mu')~bold('='~.(as.character(mu)))))

# Associated ggplot
ggplot(data.table(Y=y), aes(x=Y)) +
    geom_histogram() +
    ggtitle(fig_title)
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Создано 06.05.2020 с помощью пакета (v0.3.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...