Как удалить заголовок легенды в ggplot2? - PullRequest
53 голосов
/ 17 мая 2011

У меня есть вопрос относительно легенды в ggplot2.

Скажем, у меня есть гипотетический набор данных о средней длине моркови для двух разных цветов на двух фермах:

carrots<-NULL
carrots$Farm<-rep(c("X","Y"),2)
carrots$Type<-rep(c("Orange","Purple"),each=2)
carrots$MeanLength<-c(10,6,4,2)
carrots<-data.frame(carrots)

Я делаю простойгистограмма:

require(ggplot2)
p<-ggplot(carrots,aes(y=MeanLength,x=Farm,fill=Type)) + 
geom_bar(position="dodge") +
opts(legend.position="top")
p

Мой вопрос: есть ли способ удалить заголовок ('Type') из легенды?

Спасибо!

Ответы [ 5 ]

48 голосов
/ 17 мая 2011

Вы можете изменить заголовок легенды, передав его в качестве первого параметра в масштабе. Например:

ggplot(carrots, aes(y=MeanLength, x=Farm, fill=Type)) + 
  geom_bar(position="dodge") +
  theme(legend.position="top", legend.direction="horizontal") +
  scale_fill_discrete("")

Для этого также есть ярлык, т. Е. labs(fill="")

Поскольку ваша легенда находится в верхней части таблицы, вы также можете изменить ориентацию легенды. Вы можете сделать это, используя opts(legend.direction="horizontal").

enter image description here

47 голосов
/ 26 марта 2015

Я обнаружил, что лучший вариант - использовать + theme(legend.title = element_blank()), как отметил пользователь "gkcn".

Для меня (26.03.15) с использованием ранее предложенных labs(fill="") и scale_fill_discrete("") удалить один заголовок, только чтобы добавить в другую легенду, что бесполезно.

29 голосов
/ 17 мая 2011

Вы можете использовать labs:

p + labs(fill="")

plot example

23 голосов
/ 25 августа 2011

Единственный способ, который работал для меня, - это использование legend.title = theme_blank(), и я думаю, что это наиболее удобный вариант по сравнению с labs(fill="") и scale_fill_discrete(""), который также может быть полезен в некоторых случаях.

ggplot(carrots,aes(y=MeanLength,x=Farm,fill=Type)) + 
geom_bar(position="dodge") +
opts(
    legend.position="top",
    legend.direction="horizontal",
    legend.title = theme_blank()
)

PS В документации есть и другие полезные опции .

.
6 голосов
/ 17 мая 2011

У вас уже есть два хороших варианта, так что вот еще один, использующий scale_fill_manual().Обратите внимание, что это также позволяет легко указывать цвета полос:

ggplot(carrots,aes(y=MeanLength,x=Farm,fill=Type)) + 
  geom_bar(position="dodge") +
  opts(legend.position="top") +
  scale_fill_manual(name = "", values = c("Orange" = "orange", "Purple" = "purple"))

Если вы используете актуальную (по состоянию на январь 2015 года) версию ggplot2 (версия 1.0), то следуетработа:

ggplot(carrots, aes(y = MeanLength, x = Farm, fill = Type)) +
  geom_bar(stat = "identity", position = "dodge") +
  theme(legend.position="top") +
  scale_fill_manual(name = "", values = c("Orange" = "orange", "Purple" = "purple"))
...