Подтвердить что ты не робот

Ggplot2: как удалить слэш из легенды geom_density

Я пытаюсь построить некоторые перекрывающиеся участки плотности в ggplot2. Я сталкиваюсь с проблемой, когда я не могу удалить диагональную черту из легенды. Я пробовал использовать scale_fill_manual() и legend.key, а также взломать из R Cookbook, но я не могу понять, как это правильно.

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

Что я могу сделать, чтобы решить эту проблему?

4b9b3361

Ответ 1

Попробуйте следующее:

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

хотя это также удаляет черный контур... который можно добавить обратно, изменив theme на:

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

Я полностью забыл добавить это важное замечание: < не указывать эстетику через x=iris$Sepal.Length с помощью оператора $! Это не предполагаемый способ использования aes(), и это приведет к ошибкам и неожиданным проблемам в будущем.