gpt4 book ai didi

r - 覆盖ggplot图表中的默认颜色

转载 作者:行者123 更新时间:2023-12-04 09:30:32 25 4
gpt4 key购买 nike

我是 R 的新手,正在尝试更改生成图表的颜色。 enter image description here

 p = ggplot(plasma1, aes(x=Day, y=Control, colour=Supp))
+ theme(panel.background = element_rect(fill='white', colour='black'))
+ geom_point(size=2, shape=21)
+ geom_errorbar(aes(ymin=Control-SEMcontrol, ymax=Control+SEMcontrol), width=1)

p + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
+ xlab("X") + ylab("Y") + geom_line(linetype="dashed")

我查看了 themes(),但我似乎只能更改网格线而不是趋势线。 (理想情况下,我想将红色和蓝色更改为红色和黑色

最佳答案

注意:关于 SO 的约定是“答案”保留给演示解决方案的可重现代码。任何不足(如建议)的内容都属于评论。这就是为什么提问者提供他们的数据作为问题的一部分如此重要的原因;否则我们必须为您弥补一些,大多数人(有理由)不愿意这样做。

你要求的答案在下面,但在开始之前你应该知道 ggplot 的默认配色方案是经过仔细选择的,所以只有在有充分理由的情况下你才应该改变它.问题在于人类进化导致某些颜色(如红色)相对于其他颜色获得了感知提升。所以如果你有一条红色曲线和一条黑色曲线,红色曲线会留下更强烈的“印象”。这一事实被广泛用于某些领域(如广告)以在心理上操纵观众,但它在科学数据可视化中没有立足之地。 ggplot 默认值基于 HCL 颜色系统(它又基于 Munsell color system ),试图实现两个目标:创建一个调色板,其中每种颜色最大程度地区别于所有其他颜色,并平衡相对的感知影响。关于此主题有相当技术性的讨论 here , 和一些很好的例子 here .

底线:除非有充分的理由,否则不要更改颜色。

综上所述,您问题的简单答案是使用 scale_color_manual(...),如下所示:

# all this to set up the example - you have this already
set.seed(1) # for reproducible example
x <- rep(c(1,2,4,8,11,14), each=5)
df1 <- data.frame(Day=x,Control=125*(1-exp(-x/5))+rnorm(30,sd=25),Supp="N")
df2 <- data.frame(Day=x,Control=90*(1-exp(-x/3))+rnorm(30,sd=25),Supp="C")
plasma1 <- aggregate(Control~Day+Supp,rbind(df2, df1), FUN=function(x)c(Control=mean(x),SEMcontrol=sd(x)/sqrt(length(x))))
plasma1 <- data.frame(plasma1[,1:2],plasma1[[3]])

# you start here
library(ggplot2)
ggp <- ggplot(plasma1, aes(x=Day, y=Control, color=Supp))+
geom_point(size=3, shape=21)+
geom_line(linetype="dashed")+
geom_errorbar(aes(ymax=Control+SEMcontrol, ymin=Control-SEMcontrol), width=0.3)+
theme_bw()+theme(panel.grid=element_blank())
ggp + scale_color_manual(values=c(C="red",N="black"))

产生这个:

如评论之一所述,您还可以使用 Brewer Palettes 之一由宾夕法尼亚州立大学的 Cynthia Brewer 教授开发。这些最初用于制图应用,但已广泛用于科学可视化。

ggp + scale_color_brewer(palette="Set1")

关于r - 覆盖ggplot图表中的默认颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32335679/

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