如何获取ggplot2直方图中的图例?

时间:2018-04-29 05:42:03

标签: r histogram legend

我真的想把这个传说放到直方图中。我无法弄清楚这里发生了什么。

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 :(得分:-1)

默认情况下,

ggplot在大多数情节类型中都假定为show.legend=NA,除非通过theme()函数或show.legend=FALSE另有说明。

show.legend=NA是默认时,ggplot包含任何图例,如果映射了任何美学

要让ggplot自动添加图例,您只需将colfill映射到您的美学。也就是说,您可以将fillcol包裹在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()包装器下。