удаление легенды слоя в ggplot - PullRequest
9 голосов
/ 26 марта 2012

Другой вопрос легенды ggplot!

У меня есть набор данных в форме

test <- data.frame(
  cond = factor(rep(c("A", "B"), each=200)), 
  value = c(rnorm(200), rnorm(200, mean=0.8))
)

Итак, две группы и несколько значений, и я хочу построить плотность.Я также хочу добавить в график строку, обозначающую среднее значение для каждой группы, чтобы я:

test.cdf <- ddply(test, .(cond), summarise, value.mean=mean(value))

Затем в вызове ggplot:

ggplot(test, aes(value, fill=cond)) + 
  geom_density(alpha=0.5) + 
  labs(x='Energy', y='Density', fill='Group') + 
  opts(
    panel.background=theme_blank(), 
    panel.grid.major=theme_blank(), 
    panel.grid.minor=theme_blank(), 
    panel.border=theme_blank(), 
    axis.line=theme_segment()
  ) + 
  geom_vline(data=test.cdf, aes(xintercept=value.mean, colour=cond), 
    linetype='dashed', size=1)

Если вы запустите приведенный выше код, выполучить легенду с указанием каждой группы, а также одну для среднего показателя Vline.У меня вопрос, как я могу избавиться от легенды для geom_vline()?

1 Ответ

16 голосов
/ 26 марта 2012

В зависимости от версии ggplot2, которую вы используете, вы получаете эту проблему. Используя ggplot2 против 0.9.0 на R2.14.1 я получаю этот график:

enter image description here

, которая не включает легенду для Vline. В этой версии ggplot2 вы можете настроить легенду, используя show_guide:

ggplot(test, aes(value, fill=cond)) + 
  geom_density(alpha=0.5) + 
  labs(x='Energy', y='Density', fill='Group') + 
  opts(
    panel.background=theme_blank(), 
    panel.grid.major=theme_blank(), 
    panel.grid.minor=theme_blank(), 
    panel.border=theme_blank(), 
    axis.line=theme_segment()
  ) + 
  geom_vline(data=test.cdf, aes(xintercept=value.mean, colour=cond), 
    linetype='dashed', size=1, show_guide = TRUE)

enter image description here

которая воспроизводит вашу проблему. По умолчанию show_guide = FALSE. В более старых версиях вы можете добавить legend = FALSE к geom_vline, чтобы опустить легенду. Добавление legend = FALSE все еще работает, все еще работает в текущей версии, но выдает предупреждение:

Warning message:
In get(x, envir = this, inherits = inh)(this, ...) :
  "legend" argument in geom_XXX and stat_XXX is deprecated. Use show_guide = TRUE or show_guide = FALSE for display or suppress the guide display.

Я бы порекомендовал обновить ggplot2.

...