Я пытаюсь
- имеют разрывы строк (автоматические или принудительные)
- выравнивать текст (слева или слева и справа)
- имеют греческие буквы и процентные знаки
внутри метки легенды gglot.
Я экспериментировал с несколькими методами, но, похоже, я не могу комбинировать все трюки, о которых я читал.
Я могу получить linebreaks, вставив \n
в метки, но это, похоже, не работает с греческими буквами, а не внутри легенд. Или я мог бы иметь строки и греческие буквы в базовом графике, комбинируя mtext()
и bquote()
, чтобы вставить фрагмент текста в сюжет, (EDIT), но, как указал Грегор в комментариях раздел, это не работает с ggplot
. Ниже я объединяю list
с paste0()
, чтобы передать текст этикеткам легенды: проблема в том, что я не могу найти способ вставки греческих букв, например. гамма.
Благодарен за предложения.
Вот MWE с одной из моих попыток ( Изменить: улучшено MWE):
label1.line1 <- "Not much to say about this one"
label2.line1 <- "blabla blabla, blabla blabla, blee blee blee (bling, bling, bling),"
label2.line2 <- paste0("(", "1900-2014: g = 1.50%, gamma = 2.75%, and r = 2.30%",")")
label3.line1 <- "blabla blabla, blabla blabla, blee blee blee (bling, bling, bling),"
label3.line2 <- paste0("(", "1900-2014: g = 2.50%, gamma = 1.75%, and r = 2.30%",")")
labels_fixed <- list(
label1.line1,
paste0(label2.line1, "\n", label2.line2),
paste0(label3.line1, "\n", label3.line2)
)
library(ggplot2)
library(scales)
library(grid) # provides unit() function used to tweak spacing inside legend
ggplot(data = mtcars, aes(x = mpg, y = wt, group = factor(cyl), colour = factor(cyl), shape = factor(cyl))) +
geom_line() + geom_point(size = 3) + theme_bw() +
scale_shape_manual(name = "Details", values = c(17, 21, 15),
labels = labels_fixed) +
scale_colour_manual(name = "Details", values = c("darkred", "darkgreen", "darkblue"),
labels = labels_fixed) +
theme(legend.key = element_blank(),
legend.position = c(.65, .8),
legend.background = element_rect(colour = "black"),
legend.key.size = unit(2, "lines"),
legend.text = element_text(size = 15))
Небольшая проблема заключается в том, что текст легенды намного меньше с несколькими строками, поэтому расстояние между строками легенды должно быть изменено: мне удалось настроить legend.key.size
и legend.text
для достижения лучшего результата, чем значение по умолчанию, которое слишком стеснен.
Я также попробовал другое предложение, включающее cat(strwrap("long label here"), sep = "\n")
, но я не мог заставить это работать. Я также пробовал atop
, но это делает каждую строку слишком маленькой, а вложенность, необходимая для достижения нужной укладки, утомительна.
Есть ли способ получить греческие буквы?
Вот некоторые полезные предложения, которые я не мог сделать, например. комбинация mtext()
и bquote()
упоминается в 1 и 2:
- Выражение и новая строка в метках графика
- Разрыв строки в выражении()?
- Оберните горизонтальную легенду через несколько строк
- с помощью выражения (вставить (для вставки математической нотации в легенду ggplot
- двухстрочная метка ggplot2 с выражением
- Как аннотировать() ggplot с латексом
- Греческие буквы в аннотации ggplot