Как использовать подписки в легендах ggplot2 [R] - PullRequest
24 голосов
/ 01 июня 2011

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

Я думал, что использование expression(), которое работает в метках оси, поможет. Но моя попытка ниже не удалась. Спасибо!

library(ggplot2)
temp <- data.frame(a = rep(1:4, each = 100), b = rnorm(4 * 100), c = 1 + rnorm(4 * 100))
names(temp)[2:3] <- c("expression(b[1])", "expression(c[1])")
temp.m <- melt(temp, id.vars = "a")
ggplot(temp.m, aes(x = value, linetype = variable)) + geom_density() + facet_wrap(~ a)

Ответы [ 2 ]

24 голосов
/ 01 июня 2011

Должно работать следующее (удалите строку с names(temp) <- ...):

ggplot(temp.m, aes(x = value, linetype = variable)) + 
  geom_density() + facet_wrap(~ a) +    
  scale_linetype_discrete(breaks=levels(temp.m$variable),
                          labels=c(expression(b[1]), expression(c[1])))

См. help(scale_linetype_discrete) для доступных настроек (например, заголовок легенды через name=).

14 голосов
/ 27 марта 2012

Если вы хотите включить греческие символы и т. Д. В основные метки тиков, используйте неоцененное выражение .

Для гистограммы я сделал следующее:

library(ggplot2)
data <- data.frame(names=tolower(LETTERS[1:4]),mean_p=runif(4))

p <- ggplot(data,aes(x=names,y=mean_p))
p <- p + geom_bar(colour="black",fill="white")
p <- p + xlab("expressions") + scale_y_continuous(expression(paste("Wacky Data")))
p <- p + scale_x_discrete(labels=c(a=expression(paste(Delta^2)),
                               b=expression(paste(q^n)),
                               c=expression(log(z)),
                               d=expression(paste(omega / (x + 13)^2))))
p

barplot with greek letters and superscripts

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