为何仅首个箱线图颜色可修改?ggplot2多组箱线图配色问题
修正方案
你的问题出在scale_fill_manual的breaks参数设置上:Boxplots$SiteName会把数据里所有重复的站点名称都列出来(比如某个站点有几十条数据,breaks里就会重复几十次这个站点名),而你给的values只有6个颜色,ggplot只会匹配前几个唯一的站点,剩下的都用默认灰色。
修正方法二选一即可:
方法1:直接移除breaks参数
ggplot会自动根据fill=SiteName的唯一值来匹配颜色,不需要手动指定breaks:
ggplot(Boxplots, aes(x=SiteName, y= Concentration, fill=SiteName)) + geom_boxplot() + scale_y_log10() + theme_bw() + scale_fill_manual(values= c("blue", "cornflowerblue","cyan", "red", "darkred", "maroon"))
方法2:用唯一的站点名称作为breaks
如果需要严格控制颜色和站点的对应顺序,就用unique(Boxplots$SiteName)获取不重复的站点列表:
ggplot(Boxplots, aes(x=SiteName, y= Concentration, fill=SiteName)) + geom_boxplot() + scale_y_log10() + theme_bw() + scale_fill_manual(breaks= unique(Boxplots$SiteName), values= c("blue", "cornflowerblue","cyan", "red", "darkred", "maroon"))
这样每个箱线图就会对应你指定的颜色了。
内容的提问来源于stack exchange,提问作者jaynesw
相关产品推荐
相关产品推荐

