You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何仅首个箱线图颜色可修改?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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:47:08