Как использовать греческие символы в ggplot2?

Мои категории должны быть названы греческими буквами. Я использую ggplot2, и он прекрасно работает с данными. К сожалению, я не могу понять, как поместить эти греческие символы на ось x (на отметках), а также заставить их появиться в легенде. Есть ли способ сделать это?

UPDATE: Я посмотрел ссылку , однако нет хорошего метода, описанного для выполнения того, что я хочу сделать.

Ответ 1

Вот ссылка на превосходную вики, в которой объясняется, как поместить греческие символы в ggplot2. Итак, вот что вы делаете, чтобы получить греческие символы

  • Текстовые метки: Используйте parse = T внутри geom_text или annotate.
  • Знаки осей: Используйте expression(alpha) для получения греческой альфы.
  • Гранитные метки: Используйте labeller = label_parsed внутри facet.
  • Обозначения легенды: Используйте bquote(alpha == .(value)) в ярлыке легенды.

Вы можете увидеть подробное использование этих параметров в ссылке

ИЗМЕНИТЬ. Цель использования греческих символов вдоль меток может быть достигнута следующим образом

require(ggplot2);
data(tips);
p0 = qplot(sex, data = tips, geom = 'bar');
p1 = p0 + scale_x_discrete(labels = c('Female' = expression(alpha),
                                      'Male'   = expression(beta)));
print(p1);

Для полной документации по различным символам, которые доступны при этом и как их использовать, см. ?plotmath.

Ответ 2

Используйте expression(delta) где 'delta' для строчных δ и 'Delta' для получения капитала Δ.

Здесь полный список греческих символов:

A α alpha
Β β beta
 Γ γ gamma
 Δ δ delta
 E ε epsilon
Ζ ζ zeta
Η η eta
Θ θ theta
Ι ι iota
Κ κ kappa
Λ λ лямбда
Μ μ mu
Ν ν nu
Ξ ξ xi
Ο о омикрон
Π π pi
Ρ ρ rho
Σ σ сигма
Τ τ tau
Υ υ upsilon
Φ φ phi
Χ χ chi
Ψ ψ psi
Ω ω omega

EDIT: Скопировано из комментариев, при использовании в сочетании с другими словами используйте: expression(Delta*"price")

Ответ 3

Самое простое решение: использовать символы Юникода

expression или другие пакеты не нужны.
Не уверен, что это более новая функция для ggplot, но она работает. Это также позволяет легко смешивать греческий и обычный текст (например, добавляя '*' к галочкам)

Просто используйте символы Юникода в текстовой строке. кажется, работает хорошо для всех вариантов, которые я могу придумать. Изменить: ранее он не работал в метках фасетов. Это, по-видимому, было исправлено в определенный момент.

library(ggplot2)
ggplot(mtcars, 
       aes(mpg, disp, color=factor(gear))) + 
  geom_point() + 
  labs(title="Title (\u03b1 \u03a9)", # works fine
       x= "\u03b1 \u03a9 x-axis title",    # works fine
       y= "\u03b1 \u03a9 y-axis title",    # works fine
       color="\u03b1 \u03a9 Groups:") +  # works fine
  scale_x_continuous(breaks = seq(10, 35, 5), 
                     labels = paste0(seq(10, 35, 5), "\u03a9*")) + # works fine; to label the ticks
  ggrepel::geom_text_repel(aes(label = paste(rownames(mtcars), "\u03a9*")), size =3) + # works fine 
  facet_grid(~paste0(gear, " Gears \u03a9"))

Created on 2019-08-28 by the reprex package (v0.3.0)

Ответ 4

Вам не нужен пакет latex2exp, чтобы делать то, что вы хотели сделать. Следующий код мог бы сделать трюк.

ggplot(smr, aes(Fuel.Rate, Eng.Speed.Ave., color=Eng.Speed.Max.)) + 
  geom_point() + 
  labs(title=expression("Fuel Efficiency"~(alpha*Omega)), 
color=expression(alpha*Omega), x=expression(Delta~price))

enter image description here

Кроме того, некоторые комментарии (оставшиеся без ответа по состоянию на данный момент) попросили поставить звездочку (*) после греческой буквы. expression(alpha~"*") работает, поэтому я предлагаю попробовать.

Больше комментариев спрашивали о получении Δ Price и я нахожу самый простой способ достичь этого expression(Delta~price)). Если вам нужно что-то добавить перед греческим письмом, вы также можете сделать это: expression(Indicative~Delta~price) которая получает вас:

enter image description here