Matplotlib绘制双混淆矩阵子图尺寸不一且有多余颜色条如何解决
双混淆矩阵子图尺寸不一致问题解决
问题原因
skplt.metrics.plot_confusion_matrix默认会为每个绘图实例生成独立的颜色条,你当前两个子图都生成了各自的颜色条,颜色条占用了子图的分配空间,才导致两个子图的绘图区域尺寸不一致。
解决方法
方案1:删除所有颜色条(满足删除多余颜色条的需求,子图自动对齐)
给两个plot_confusion_matrix调用都添加cbar=False参数关闭颜色条即可,修改后代码如下:
fig, ax = plt.subplots(nrows=1, ncols=2, figsize = (18,8)) fig.suptitle('Matriz de Confusão') # 新增cbar=False参数关闭颜色条 skplt.metrics.plot_confusion_matrix(y_test, y_pred_log, normalize=True, ax=ax[0], title='Regressão Logística', cbar=False) skplt.metrics.plot_confusion_matrix(y_test, y_pred_tree, normalize=True, ax=ax[1], title='Árvore de decisão', cbar=False) ax[0].xaxis.set_ticklabels(['Normal', 'Fraude']); ax[0].yaxis.set_ticklabels(['Normal', 'Fraude']) ax[1].xaxis.set_ticklabels(['Normal', 'Fraude']); ax[1].yaxis.set_ticklabels(['Normal', 'Fraude']) plt.show()
方案2:保留统一颜色条
如果你需要保留颜色条作为参考,可以只保留一个公共颜色条放在画布右侧,避免占用子图空间,保证两个子图尺寸一致,实现逻辑如下:
- 两个子图绘图时都关闭颜色条
- 单独在画布右侧新增颜色条区域,绑定其中一个混淆矩阵的色阶数据即可。
内容的提问来源于stack exchange,提问作者letícia
相关产品推荐
相关产品推荐

