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

使用Seaborn绘制stripplot组合图时无法按行分类着色的问题求助

问题原因

你当前的stripplot未指定用于分类着色的字段,因此即使定义了颜色映射也无法生效。

修改方案

假设你的数据集ARL_DA_reason3中存储航空公司代码的列名为AIRLINE(如果实际列名不同,替换成你的真实列名即可),给所有stripplot调用增加hue、palette参数即可,不需要修改其他逻辑,示例修改后的代码如下:

import seaborn as sns
import matplotlib.pyplot as plt

fig, axes=plt.subplots(1,5,figsize=(11,8))
my_new_color={'UA':'white','AA':'blueviolet','US':'#98F5FF',
         'F9':'#FF9912','B6':'#66CD00','OO':'green','AS':'#3D59AB','NK':'black',
         'WN':'red','DL':'yellow','EV':'#98F5FF','HA':'#FFF8DC','MQ':'#7FFF00',
         'VX':'pink'}

sns.boxplot(ax=axes[0],y='AIR_SYSTEM_DELAY', data=ARL_DA_reason3,linewidth=1, width=0.55)
# 新增hue、palette参数,加legend=False避免重复显示图例
sns.stripplot(ax=axes[0],y='AIR_SYSTEM_DELAY', data=ARL_DA_reason3, size=10, hue='AIRLINE', palette=my_new_color, legend=False)

sns.boxplot(ax=axes[1], data=ARL_DA_reason3, y='SECURITY_DELAY',linewidth=1, width=0.55)
sns.stripplot(ax=axes[1],y='SECURITY_DELAY', data=ARL_DA_reason3, size=10, hue='AIRLINE', palette=my_new_color, legend=False)

sns.boxplot(ax=axes[2], data=ARL_DA_reason3, y='AIRLINE_DELAY',linewidth=1, width=0.55)
sns.stripplot(ax=axes[2],y='AIRLINE_DELAY', data=ARL_DA_reason3, size=10, hue='AIRLINE', palette=my_new_color, legend=False)

sns.boxplot(ax=axes[3], data=ARL_DA_reason3, y='LATE_AIRCRAFT_DELAY',linewidth=1, width=0.55)
sns.stripplot(ax=axes[3],y='LATE_AIRCRAFT_DELAY', data=ARL_DA_reason3, size=10, hue='AIRLINE', palette=my_new_color, legend=False)

sns.boxplot(ax=axes[4], data=ARL_DA_reason3, y='WEATHER_DELAY',linewidth=1, width=0.55)
sns.stripplot(ax=axes[4],y='WEATHER_DELAY', data=ARL_DA_reason3, size=10, hue='AIRLINE', palette=my_new_color, legend=False)

plt.tight_layout()
plt.show()

补充说明

如果需要箱线图也按照航司配色同步着色,给每个boxplot也添加和stripplot相同的hue、palette、legend=False参数即可。

内容的提问来源于stack exchange,提问作者Constellation

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:54:01