1
我想创建一个ggplot密度的图例,将一个组与所有组进行比较。使用此示例 - R: Custom Legend for Multiple Layer ggplot - 我可以使用下面的代码成功完成此操作。如何通过在ggplot中映射来自不同数据帧的aes_string来生成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'))
谢谢 - 代码生成一个阴谋,但没有传说。 – user4556428
非常好 - 这正是我需要的。 – user4556428