gpt4 book ai didi

R - 在 ggplot2 中自定义图例以添加 geom_vline() 组件

转载 作者:行者123 更新时间:2023-12-04 10:08:40 31 4
gpt4 key购买 nike

我使用 ggplot2 创建了一个混合密度图,我想在图中添加摘要信息,即每个密度的均值和代表某种真实均值的 1 个值。

这是从@Hernando Casas 借来的模拟示例。

set.seed(1234)
data <- data.frame(value = rnorm(n = 10000, mean =50, sd = 20),
type = sample(letters[1:2], size = 10000, replace = TRUE))
data$value[data$type == "b"] <- data$value[data$type == "b"] +
rnorm(sum(data$type == "b"), mean = 55)
library(ggplot2)
gp <- ggplot(data=data, aes_string(x="value"))
gp <- gp + geom_density(aes_string(fill="type"), alpha=0.3)

enter image description here

添加了垂直线的摘要信息后。情节看起来像这样

vlines <- data.frame(value = c(mean(data$value[data$type == "a"]), mean(data$value[data$type == "b"])),Mean = c("A", "B"))

gp2 <- gp + geom_vline(data=vlines,
aes(xintercept=value, colour=Mean),
size=1.05, linetype="dashed", show_guide=TRUE)
gp3 <- gp2+geom_vline(xintercept=(50+55+50)/2,
size=1.05)

enter image description here

虽然情节正是我想要的,但我想将这条黑色实线添加到“平均”框下的图例中,名称为“总体”。这就是我卡住的地方,我根本不知道如何自定义图例,因为我对 ggplot2 没有太多经验。

我找到了一些例子并修改了我的代码

gp <- ggplot(data=data, aes_string(x="value"))
gp <- gp + geom_density(aes_string(fill="type"), alpha=0.3)

vlines <- data.frame(value = c(mean(data$value[data$type == "a"]),
mean(data$value[data$type == "b"]),
(50+55+50)/2),
Mean = c("A", "B", "Overall"))

gp2 <- gp + geom_vline(data=vlines,
aes(xintercept=value, colour=Mean),
size=1.05, linetype="dashed", show_guide=TRUE)

enter image description here

现在我确实有一个图例,但我想将线条的颜色更改为与密度相同,更重要的是我需要将“整体”线条更改为纯深色,我又遇到了自定义问题。

我非常感谢任何人的帮助。谢谢

最佳答案

可能最简单的方法就是如下指定手动颜色比例和线型比例:

ggplot(data=data, aes(x=value)) + 
geom_density(aes(fill=type), alpha=0.3) +
geom_vline(data=vlines,
aes(xintercept=value, colour=Mean, linetype=Mean),
size=1.05, show_guide=TRUE) +
scale_color_manual(values = c("red","green","black")) +
scale_linetype_manual(values = c(2,2,1)) +
theme_bw()

给出:

enter image description here

关于R - 在 ggplot2 中自定义图例以添加 geom_vline() 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33516165/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com