首页 > 解决方案 > 使用python matplotlib时如何避免“suptitle”和“subplots”之间的重叠?

问题描述

我正在尝试绘制一个矩阵来比较一些数据。但是情节的标题与子情节重叠。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sn

def save_graph_cm(CMatrix):
    # CMatrix is a dict with four 3x3 pandas DataFrame
    k = 'Wine'
    id = 0
    cm = 1
    plt.suptitle("#" + str(id) + " Confusion Matrix for " + k + " dataset")
    for c_matrix in CMatrix:
        plt.subplot(2, 2, cm)
        sn.heatmap(CMatrix[c_matrix], annot=True, cmap="YlOrRd")
        plt.title("CV - " + str(cm-1))
        plt.xlabel("Predicted Classes")
        plt.ylabel("Real Classes")
        cm += 1
    plt.tight_layout()
    plt.show

我现在得到的是:

重叠的标题

标签: pythonmatplotlib

解决方案


v3.3开始,matplotlibtight_layout现在可以suptitle正确显示:

import matplotlib.pyplot as plt

fig, axs = plt.subplots(1, 3)
for i, ax in enumerate(axs):
    ax.plot([1, 2, 3])
    ax.set_title(f'Axes {i}')

fig.suptitle('suptitle')
fig.tight_layout()

在此处输入图像描述


推荐阅读