R 如何更改ggplot2密度图中的颜色?

R 如何更改ggplot2密度图中的颜色?,r,plot,ggplot2,R,Plot,Ggplot2,摘要:我希望在不丢失自动生成的图例的情况下为ggplot2()密度分布图选择颜色 详细信息:我用以下代码创建了一个数据框(我意识到它并不优雅,但我只是在学习R): 这将产生以下输出: 我想选择线条出现的颜色,但我一辈子都不知道如何选择。我在网站上读过很多其他的帖子,但都没有用。最相关的是: 在搜索了一段时间后,我尝试了: ## This one gives an error ggplot(df, aes(x=val,colour=c("red","blue"))) + geom_den

摘要:我希望在不丢失自动生成的图例的情况下为ggplot2()密度分布图选择颜色

详细信息:我用以下代码创建了一个数据框(我意识到它并不优雅,但我只是在学习R):

这将产生以下输出:

我想选择线条出现的颜色,但我一辈子都不知道如何选择。我在网站上读过很多其他的帖子,但都没有用。最相关的是:

在搜索了一段时间后,我尝试了:

## This one gives an error
ggplot(df, aes(x=val,colour=c("red","blue"))) + geom_density() 
Error: Aesthetics must either be length one, or the same length as the dataProblems:c("red", "blue")

## This one produces a single, black line
ggplot(df, aes(x=val),colour=c("red","green")) + geom_density() 
我想到的最好的办法是:

ggplot() + geom_density(aes(x=cands),colour="blue")  + geom_density(aes(x=non),colour="red")
如上图所示,最后一个命令正确地更改了线条的颜色,但删除了图例。我喜欢ggplot2的传奇系统。这是很好的和简单的,我不想摆弄与重建的东西,ggplot显然是有能力的。最重要的是,语法非常难看。我的实际数据框架由7组不同的数据组成。我不敢相信写7次
+geom_density(aes(x=FOO),color=“BAR”)
是最优雅的编码方式

所以,如果其他一切都失败了,我会接受一个答案,告诉我如何让传奇回到第二个情节。然而,如果有人能告诉我如何正确地做,我会非常高兴。

set.seed(45)
set.seed(45)
df <- data.frame(x=c(rnorm(100), rnorm(100, mean=2, sd=2)), grp=rep(1:2, each=100))
ggplot(data = df, aes(x=x, color=factor(grp))) + geom_density() + 
                scale_color_brewer(palette = "Set1")

ggplot(data = df, aes(x=x, color=factor(grp))) + geom_density() + 
                scale_color_brewer(palette = "Set3")

df-See(它与底部更相关,但整个网站都是无价的;把它收藏起来)。@joran谢谢,但正是这个网站让我走了这么远。但没有告诉我如何更改线条的颜色。标题为“调色板:手动定义”的部分根本没有帮助?解决方案几乎就是那一节中的代码。@Arun我被纠正了。我再试了一次,效果很好。我可以发誓我以前试过这个和各种排列,但今天它成功了。不用担心,我会让你们两个中的一个来写出来,然后找代表。
ggplot() + geom_density(aes(x=cands),colour="blue")  + geom_density(aes(x=non),colour="red")
set.seed(45)
df <- data.frame(x=c(rnorm(100), rnorm(100, mean=2, sd=2)), grp=rep(1:2, each=100))
ggplot(data = df, aes(x=x, color=factor(grp))) + geom_density() + 
                scale_color_brewer(palette = "Set1")

ggplot(data = df, aes(x=x, color=factor(grp))) + geom_density() + 
                scale_color_brewer(palette = "Set3")