gpt4 book ai didi

r - 如何通过从 ggplot 中的不同数据帧映射 aes_string 在 ggplot 中生成图例?

转载 作者:行者123 更新时间:2023-12-05 06:44:06 30 4
gpt4 key购买 nike

我正在尝试为 ggplot 密度创建一个图例,将一个组与所有组进行比较。使用此示例 - R: Custom Legend for Multiple Layer ggplot - 我可以使用下面的代码成功地做到这一点。

met1 <- data.frame(
Score = sample(1:10),
Group = sample(c("Group1", "Group2", "Group3"), 30, replace = TRUE))

ggplot()+geom_density(data=met1, aes(x=Score,fill='black'))+geom_density(data=met1[met1$Group=="Group1",],aes(x=Score,fill='red'))+ scale_fill_identity(name='Groups', guide='legend',labels=c('Group1', 'All Groups'))

但是,我需要使用 aes_string 来使用函数调用 ggplot 来创建许多图。当我尝试使用下面的代码时,它会产生错误 - eval(expr, envir, enclos) 错误:找不到对象“black”。

x_var <- "Score"

ggplot()+geom_density(data=met1, aes_string(x=x_var,fill='black'))+
geom_density(data=met1[met1$Group=="Group1",],aes(x=x_var,fill='red'))+
scale_fill_identity(name='Groups', guide='legend',labels=c('Group1', 'All Groups'))

最佳答案

您可以使用 shQuote 来引用字符串,并使用 scale_fill_manual 将字符串映射到适当的颜色

x_var <- "Score"

ggplot(met1, aes_string(x_var)) +
geom_density(data=met1, aes_string(x=x_var, fill=shQuote("b"))) +
geom_density(data=met1[met1$Group=="Group1",], aes_string(x=x_var, fill=shQuote("r")), alpha=0.50) +
scale_fill_manual(name='Groups', guide='legend',
values=c("b"="black", "r"="red"),
labels=c('All Groups', 'Group1'))

关于r - 如何通过从 ggplot 中的不同数据帧映射 aes_string 在 ggplot 中生成图例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30955654/

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