Как использовать греческие символы в ggplot2? - PullRequest
88 голосов
/ 14 марта 2011

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

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

Ответы [ 4 ]

131 голосов
/ 14 марта 2011

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

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

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

EDIT. Цель использования греческих символов вдоль отметок может быть достигнута следующим образом

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.

30 голосов
/ 31 марта 2016

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

Вот полный список греческих символов:

Α α альфа
Beta β бета
Γ гамма
Δ δ дельта
Eps ε эпсилон
Ζ ζ дзета
Η η эта
The θ тета
I ι йота
K κ каппа
Λ λ лямбда
Mu μ mu
Nu ν ню
Ξ ξ xi
Ο omicron
Pi π pi
R ρ rho
Σ σ сигма
Tau τ тау
Up υ upsilon
Φ φ фи
Χ хи чи
Ψ ψ фунтов на квадратный дюйм
Ом Омега

РЕДАКТИРОВАТЬ: Скопировано из комментариев, при использовании в сочетании с другими словами использовать как: expression(Delta*"price")

20 голосов
/ 14 сентября 2018

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

Нет 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*"))) # works fine for text labels in plot

Создано в 2018-11-14 пакетом представить (v0.2.1)

11 голосов
/ 04 января 2018

Вам не нужен пакет 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

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