2014-01-11 3 views
14

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

ggtheme <- 
theme(
axis.text.x = element_text(colour='black'), 
axis.text.y = element_text(colour='black'), 
panel.background = element_blank(), 
panel.grid.minor = element_blank(), 
panel.grid.major = element_blank(), 
panel.border = element_rect(colour='black', fill=NA), 
strip.background = element_blank(), 
legend.justification = c(0, 1), 
legend.position = c(0, 1), 
legend.background = element_rect(colour = NA), 
legend.key = element_rect(colour = "white", fill = NA), 
legend.title = element_blank() 
) 

colors <- c("red", "blue") 
df <- data.frame(year = c(1:10), value = c(10:19), gender = rep(c("male","female"),each=5)) 
ggplot(df, aes(x = year, y = value)) + geom_point(aes(colour=gender)) + 
stat_smooth(method = "loess", formula = y ~ x, level=0, size = 1, aes(group = gender, colour=gender)) + 
ggtheme + scale_color_manual(values = colors) 
+1

Не можете добавить изображение, потому что мне не хватает точки –

ответ

18

Вы получите этот серый цвет внутри ключей легенды, потому что вы используете stat_smooth(), что по умолчанию делает также доверительный интервал вокруг линии с некоторой заливкой (серый, если fill= не используется внутри aes()).

Одним из решений является установка se=FALSE для stat_smooth(), если вам не нужны доверительные интервалы.

+stat_smooth(method = "loess", formula = y ~ x, level=0, size = 1, 
       aes(group = gender, colour=gender),se=FALSE) 

Другим решением является использование функции guides() и override.aes=, чтобы удалить заливку из легенды, но сохранить доверительные интервалы вокруг линий.

+ guides(color=guide_legend(override.aes=list(fill=NA))) 
+0

Спасибо, это переопределение она может быть помещена в тема? –

+1

Нет, потому что это не элемент theme(), а определяет, как создается легенда на основе эстетики. –

+5

По какой-то причине se = F не работает для меня - я пошел с + темой (legend.key = element.blank()) – badgley

9
theme_set(theme_gray() + theme(legend.key=element_blank())) 

Если вы хотите также удалить серый фон:

theme_set(theme_bw() + theme(legend.key=element_blank())) 
-1
+ theme(legend.background=element_blank()) 
+0

Это не работает для меня. Может быть, объясните немного больше, если вы думаете, что это действительно работает, иначе лучше удалите его. – Suren

Смежные вопросы