Как удалить заголовок легенды в ggplot2?

У меня есть вопрос относительно легенды в 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

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

Спасибо!

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

p + labs(fill="")

plot example

Ответ 4

Единственный способ, который работал у меня, - использовать 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()
)

P.S. В документации есть более полезные опции.

Ответ 5

У вас уже есть два хороших варианта, поэтому здесь используется 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"))

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

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"))