bgj
bgj

Reputation: 31

How to remove the default grey fill for linetype legend in barplot with ggplot2?

I have a bar-plot with two different variables. For one of the factors (gr) I have chosen different ´lintype´ in the plot. The legend for "gr" shows ´lintype´ but with a dark grey fill, which I think is confusing.

Does anyone know how to remove the fill or change it to white or transparent?
(All tips I have found only change a background to the legend, but does not affect the grey fill)

    yval <- c(3, 7, 4, 4, 8, 9, 4, 7, 9, 6, 6, 3)
trt <- rep(c("A", "B", "C"), times=4)
gr <- rep(c(rep(("case"), times = 3), rep(("control"), times = 3)), times = 2)
var <- c(rep(("var1"), times = 6), rep(("var2"), times = 6))  
df <- data.frame(yval, device, ccgroup, var)

ggplot(data=df, aes(x=var)) +
  geom_bar( color = "black", size = 1, aes(weights = yval, fill = trt, linetype = gr) , position = "dodge")

Her is the plot

Upvotes: 3

Views: 676

Answers (1)

stefan
stefan

Reputation: 124473

This can be achieved e.g. via guide_legend which allows you to set the fill color used in the legend. Try this:

library(ggplot2)

yval <- c(3, 7, 4, 4, 8, 9, 4, 7, 9, 6, 6, 3)
trt <- rep(c("A", "B", "C"), times=4)
gr <- rep(c(rep(("case"), times = 3), rep(("control"), times = 3)), times = 2)
var <- c(rep(("var1"), times = 6), rep(("var2"), times = 6))  
df <- data.frame(yval, trt, gr, var)

ggplot(data=df, aes(x=var)) +
  geom_bar(color = "black", size = 1, aes(weights = yval, fill = trt, linetype = gr) , position = "dodge") +
  guides(linetype = guide_legend(override.aes = list(fill = c(NA, NA))))
#> Warning: Ignoring unknown aesthetics: weights

Upvotes: 6

Related Questions