Pandas箱线图样式表中部分颜色属性不生效问题咨询
Pandas箱线图自定义样式表颜色失效问题
问题现象
- 用
plt.style.use("my_style")加载自定义样式表配置箱线图时,boxplot.medianprops.color、boxplot.boxprops.color完全不生效,但对应的线型属性正常工作 boxplot.meanprops.color及线型属性均正常生效- 代码里直接设置的
capprops、flierprops属性没有问题
样式表示例片段
### BoxPLots boxplot.showmeans: True boxplot.showcaps: True boxplot.showbox: True boxplot.showfliers: True boxplot.meanline: True boxplot.showmeans: True boxplot.showcaps: True boxplot.showbox: True boxplot.showfliers: True boxplot.meanline: True # 颜色样式部分未生效 boxplot.medianprops.color: "red" # 未生效 boxplot.medianprops.linestyle: solid # 生效 boxplot.meanprops.color: "yellow" # 生效 boxplot.meanprops.linestyle: dashed # 生效 boxplot.boxprops.color: 'red' # 未生效 boxplot.boxprops.linestyle: dotted # 生效
代码示例
df = pd.DataFrame(array, columns=['Values']) plt.style.use("my_style") bp = df.boxplot(column=['Values'], capprops=dict(color='#ff5c00'), flierprops=dict(marker='o', markeredgecolor='#fdfc60', markersize=10))
原因及解决办法
这是因为Pandas的boxplot()方法默认会用内置的颜色循环覆盖箱体、中位数的颜色设置,均值线不受这个逻辑影响。
有两种可行的解决方式:
在样式表中指定箱线图基础颜色
在样式表中添加boxplot.color配置,它会统一设置箱体、中位数等元素的基础颜色,同时你可以继续单独指定线型:boxplot.color: "red" boxplot.medianprops.linestyle: solid boxplot.boxprops.linestyle: dotted boxplot.meanprops.color: "yellow" boxplot.meanprops.linestyle: dashed调用boxplot时关闭默认颜色循环
在boxplot()方法里设置color='black'(任意占位颜色都行),这样Pandas就不会覆盖样式表中的颜色配置:bp = df.boxplot(column=['Values'], color='black', # 关闭默认颜色循环 capprops=dict(color='#ff5c00'), flierprops=dict(marker='o', markeredgecolor='#fdfc60', markersize=10))
注意:如果同时设置boxplot.color和单独的boxprops.color,单独配置会覆盖基础颜色,确保样式表中属性顺序合理即可。
内容的提问来源于stack exchange,提问作者neuralprocessing
相关产品推荐
相关产品推荐

