Как получить легенду в гистограмме ggplot2? - PullRequest
0 голосов
/ 29 апреля 2018

Я действительно хочу включить легенду в гистограмму. И я не могу понять, что здесь происходит.

ggplot(data=Male, aes(Male$Naval.Girth)) + 
   geom_histogram(aes(y =..density..), 
             breaks=seq(63, 123, by = 3), 
             col="black", 
             fill="black", 
             alpha=.7) +
   labs(title="Male Naval Girth Measurements", 
             x= "Girth (cm)", y="Density") +
   geom_vline(aes(xintercept=mean(Male$Naval.Girth, na.rm=T)), show.legend = TRUE, 
             color="red", linetype="dashed", size=1.2) +
   stat_function(fun=dnorm,
           color="red",
           size = 0.7,
           args=list(mean=mean(Male$Naval.Girth), 
           sd=sd(Male$Naval.Girth)))

Спасибо.

1 Ответ

0 голосов
/ 29 апреля 2018

ggplot по умолчанию предполагает show.legend=NA в большинстве типов графиков в любом случае, если не указано иначе с помощью функции theme() или show.legend=FALSE.

Когда show.legend=NA, , который является значением по умолчанию , ggplot включает любую легенду, если сопоставлена ​​любая эстетика .

Чтобы заставить ggplot автоматически добавлять легенду, все, что вам нужно, это сопоставить col или fill с вашей эстетикой. То есть вы можете обернуть свои fill или col в aes(). Следующий код не добавляет легенду:

ggplot(data=Male, aes(Male$Naval.Girth)) + 
   geom_histogram(aes(y =..density..), 
             breaks=seq(63, 123, by = 3), 
             col="black", 
             fill="black", 
             alpha=.7)

Но этот делает, и обратите внимание на aes(fill=Naval.Girth) эстетическое отображение здесь:

ggplot(data=Male, aes(Male$Naval.Girth)) + 
       geom_histogram(aes(y =..density.., fill=Naval.Girth), 
                 breaks=seq(63, 123, by = 3), 
                 col="black", 
                 alpha=.7)

Итак, еще раз, если вы хотите легенду, просто поместите цвета параметров заполнения в оболочку aes().

...