我有一个30列的小样图。我想给前19个设置颜色,其余的设置为其他颜色。(请参见下表)。
我尝试制作颜色向量。我指定了图表中各列的名称;
AMR_antibiotics <- c("AMIK", "GEN", "AMC", "AMP", "IMI", "P.T4", "FAZ", "FOV", "POD", "TAZ", "LEX", "CHL", "ENRO", "MAR", "ORB", "PRA", "DOX", "TET", "SXT", "AMOX", "AMPIC", "OXA", "PEN", "CEZ", "CPZ", "CEQ", "K.C", "MAF", "PIR", "ERY")
然后,我尝试使用下面的代码分配颜色;
AMR_colours <- c(AMIK:SXT="steelblue", AMOX:ERY="coral3")
然后,我最终会使用scale_fill_manual(值= AMR_colours)将AMR_colours添加到我的ggplot代码中
这没有用,是因为尝试使用上面的代码执行此操作完全错误吗?我认为这是一种简单的方法,而不是必须手动遍历各列并重复相同的颜色?
如果这是完全错误的,那么朝着正确方向的任何推销将不胜感激!:)
谢谢!
您将创建一个颜色向量,并指定名称:
AMR_colours = c(rep("steelblue",19),rep("coral3",11))
names(AMR_colours) = AMR_antibiotics
为了显示:
df = data.frame(x=rep(AMR_antibiotics,3),
y=runif(3*length(AMR_antibiotics)),VAR=rep(1:3,each=length(AMR_antibiotics)))
df$x = factor(df$x,levels=AMR_antibiotics)
ggplot(df,aes(x=x,y=y,fill=x))+
geom_col()+
facet_wrap(~VAR,ncol=1)+
scale_fill_manual(values=AMR_colours)
如您所见,图例有点长,因此如果您想将它们概括为AMIK:SXT
,和AMOX:ERY
,则可以尝试:
df$fill = ifelse(df$x %in% AMR_antibiotics[1:19],"AMIK:SXT","AMOX:ERY")
fill_two = c("AMIK:SXT"="steelblue", "AMOX:ERY"="coral3")
ggplot(df,aes(x=x,y=y,fill=fill))+
geom_col()+
facet_wrap(~VAR,ncol=1)+
scale_fill_manual(values=fill_two)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句