I am trying to make the legend key fill for a ggplot transparent. I followed the instructions on one of Hadley's ggplot2 guides for changing the legend key fill, but for some reason when I set the fill to transparent it fills with gray. Even when I set the legend key fill to white, it still appears gray in the final plot.
Here is an example:
library(ggplot2)
data1 = c(0,10, 11, 23, 33, 40, 41, 50, 59, 68, 76, 88, 90, 99)
data2 = c(2, 8, 10, 22, 39, 47, 49, 55, 62, 70, 76, 86, 88, 95)
df = data.frame(data1, data2)
(plot = ggplot() +
geom_smooth(data=df, aes(data1, data2,colour="sample1"))+
geom_abline(intercept=0, slope=1,linetype="dashed", color = "black")+
scale_x_continuous(expand=c(0,0), limits=c(0,100)) +
scale_y_continuous(expand=c(0,0), limits=c(0,100))+
theme_classic()+
labs(y="data2", x="data1",
title="sample 1 data1 vs data2") +
theme(plot.title = element_text(size=18, face="bold"),
legend.key = element_rect(colour = "transparent", fill = "white"),
legend.justification = c(1,0), legend.position = c(1,0))+
scale_color_discrete(name="Sample") )
If I set theme(legend.key = element_rect(colour = "transparent", fill = "red"))
I get the following plot:
So it appears that I can change the legend key fill, but just not to the color white or transparent.
Does anyone know what I am doing wrong, or if there is just no way to make the legend key fill transparent/white ?
EDIT: Setting theme(legend.key = element_rect(fill = alpha("white", 0.0)))
Does not fix the problem.
See here:
library(ggplot2)
library(scales)
data1 = c(0,10, 11, 23, 33, 40, 41, 50, 59, 68, 76, 88, 90, 99)
data2 = c(2, 8, 10, 22, 39, 47, 49, 55, 62, 70, 76, 86, 88, 95)
df = data.frame(data1, data2)
(plot = ggplot() +
geom_smooth(data=df, aes(data1, data2,colour="sample1"))+
theme_classic()+
labs(y="data2", x="data1",
title="sample 1 data1 vs data2") +
theme(plot.title = element_text(size=18, face="bold"),
legend.key = element_rect(colour = "transparent", fill = alpha("red", 0)),
legend.justification = c(1,0), legend.position = c(1,0))+
scale_color_discrete(name="Sample") )
EDIT2: If I use geom_line()
instead of geom_smooth
I am able to set the legend key fill to NA, so it must be because the line in geom_smooth
has a gray area for the confidence interval around it, therefore the legend key mirrors that look.
(plot = ggplot() +
geom_smooth(data=df, aes(data1, data2,colour="sample1"))+
geom_abline(intercept=0, slope=1,linetype="dashed", color = "black")+
scale_x_continuous(expand=c(0,0), limits=c(0,100)) +
scale_y_continuous(expand=c(0,0), limits=c(0,100))+
theme_classic()+
labs(y="data2", x="data1",
title="sample 1 data1 vs data2") +
theme(plot.title = element_text(size=18, face="bold"),
legend.key = element_rect(colour = NA, fill = NA),
legend.justification = c(1,0), legend.position = c(1,0))+
scale_color_discrete(name="Sample") )
legend.key = element_rect(fill = NA)
gave the same result as before. the key fill is still gray. – Reilstein