Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ggplot2: how to remove slash from geom_density legend

Tags:

I'm trying to plot some overlapping density plots in ggplot2. I'm running into a problem where I cannot remove the diagonal slash from the legend. I have tried using scale_fill_manual() and legend.key as well as the hack from R Cookbook, but I cant seem to get it right.

data(iris) iris=iris cols=brewer.pal(3,"Set1")  ggplot(iris) +      geom_density(position="identity",aes(x=iris$Sepal.Length,fill=cols[1]),         colour="black",alpha=.5) +     geom_density(position="identity",aes(x=iris$Sepal.Width,fill=cols[2]),         colour="black",alpha=.5)+       theme_bw() +     scale_fill_identity(guide="legend",labels=c("Sepal Width","Sepal Length"))+     xlab("X axis") +     theme(panel.background=element_blank(),         legend.title=element_blank(),         legend.key = element_rect(),         legend.background = element_blank(),         legend.justification=c(1,0),          legend.position=c(.75,.5),         panel.grid.major = element_blank(),         panel.grid.minor = element_blank(),         panel.border = element_blank(),         panel.background = element_blank()) 

enter image description here

What can I do to solve this?

like image 516
Logister Avatar asked Aug 13 '14 19:08

Logister


People also ask

How do I remove a legend from ggplot2?

Example 1: Remove All Legends in ggplot2 We simply had to specify legend. position = “none” within the theme options to get rid of both legends.

What is Geom_density in Ggplot?

geom_density.Rd. Computes and draws kernel density estimate, which is a smoothed version of the histogram. This is a useful alternative to the histogram for continuous data that comes from an underlying smooth distribution.


1 Answers

Try this:

+ guides(fill = guide_legend(override.aes = list(colour = NULL))) 

although that removes the black outline as well...which can be added back in by change the theme to:

legend.key = element_rect(colour = "black") 

I completely forgot to add this important note: do not specify aesthetics via x=iris$Sepal.Length using the $ operator! That is not the intended way to use aes() and it will lead to errors and unexpected problems down the road.

like image 193
joran Avatar answered Oct 21 '22 12:10

joran