ggplot2中的自定义图例:如何不加填充?

时间:2018-10-22 21:03:16

标签: r ggplot2

我正在进行一项个性调查,该调查将为参与者生成得分报告。我想让它们尽可能容易阅读和理解,所以我正在为被调查的性状生成一条正态曲线,并显示一条线,显示该人落在曲线上的位置。

首先,让我们生成一些数据:

sample <- as.data.frame(rnorm(1000, 0, 1))
names(sample) <- "trait"
score <- mean(sample$trait)

我的问题出在图例上—我无法弄清楚如何自定义图例以显示1)当我不绘制多个因素的图形时填充的“填充”颜色,以及2)显示参与者得分的那一行。

我可以靠近:

ggplot(sample, aes(x=trait)) +
 geom_density(fill="blue") +
 geom_density(aes(fill="Population")) +
 geom_vline(aes(xintercept=score, color="You")) +
 geom_vline(xintercept=score, color='red',
         linetype="solid",size=1.5) +
 scale_colour_manual(values=c('Population'='blue', 
                                    'You'='red'))

Graph image 1

enter image description here

但这不使用指定的颜色,并且在图例中具有多余的“颜色”和“填充”文本。

如果我将geom_density美学更改为颜色而不是填充,并保持其他所有不变...

geom_density(aes(color="Population")) +

...这将正确应用颜色,但不会用蓝色填充图例中的“ Population”框。

Graph image 2

enter image description here

理想情况下,我想将“ Population”框填充为蓝色,并删除图例中“ You”行周围的红色框。我该如何实现?

1 个答案:

答案 0 :(得分:0)

我希望可以使用。

ggplot(sample, aes(trait)) +
    geom_density(aes(fill = "Population")) +
    geom_vline(aes(xintercept = mean(trait), color = "You")) +
    theme(legend.title = element_blank()) +
    scale_color_manual(values = "red", breaks = "You") +
    scale_fill_manual(values = "blue", breaks = "Population")

enter image description here