基于独热编码季节列绘制实际值预测值箱线图及边框优化
解决方案
你可以通过调整seaborn.boxplot()的内置参数直接修改箱体样式、线宽和宽度,解决边框过粗、图表拥挤的问题:
方法1:直接调整全局线宽
通过linewidth参数统一缩小所有箱线元素(箱体边框、须线、中位数线)的粗细,同时可以搭配width参数缩小箱体宽度,留出更多间距:
import seaborn as sn import matplotlib.pyplot as plt # 原有数据处理代码 df['season'] = (df.iloc[:, 2:] == 1).idxmax(1) df = df.melt(id_vars ='season', value_vars=['actuals', 'predicted']) # 调整参数绘图 sn.boxplot( x='season', y='value', hue='variable', data=df, palette="Set3", linewidth=1, # 缩小所有线条的粗细,默认值一般为1.5左右 width=0.7 # 缩小箱体整体宽度,避免分组之间拥挤 ) plt.show()
方法2:自定义箱体边框样式
如果你想要完全去掉箱体的灰色边框,或者单独修改边框颜色/透明度,可以通过boxprops参数单独配置箱体属性:
sn.boxplot( x='season', y='value', hue='variable', data=df, palette="Set3", linewidth=1, width=0.7, # 自定义箱体属性:edgecolor设置边框颜色,设为none即隐藏边框,也可以设为"white"/"lightgray"等 boxprops={"edgecolor": "none", "alpha": 0.9} ) plt.show()
额外优化建议
如果还是觉得图表拥挤,可以额外调整布局元素:
# 调整x轴标签旋转角度避免重叠 plt.xticks(rotation=0) # 移动图例到图表外侧,避免遮挡箱体 plt.legend(bbox_to_anchor=(1.02, 1), loc='upper left') # 自动调整布局,避免元素被截断 plt.tight_layout()
内容的提问来源于stack exchange,提问作者CG7
相关产品推荐
相关产品推荐

