如何使用pandas包为python创建的子图清除默认的boxplot的suptitle

Tia*_* He 4 python matplotlib boxplot pandas subplot

在下面的例子中,我尝试为四个"Power"级别制作"Emission"与"Voltage"的箱线图,每个功率级别占据一个子图.

fig = plt.figure(figsize=(16,9))
i = 0
for Power in [10, 20, 40, 60]:
    i = i+1
    ax = fig.add_subplot(2,2,i)
    subdf = df[df.Power==Power]
    bp = subdf.boxplot(column='Emission', by='Voltage', ax=ax)
fig.suptitle('My Own Title')
Run Code Online (Sandbox Code Playgroud)

问题是,

fig.suptitle('My Own Title')
Run Code Online (Sandbox Code Playgroud)

命令不会刷新默认的"按电压分组"的格式.我在这里错过了什么?或者这是一个错误?

谢谢.

CT *_*Zhu 5

这些是通过suptitle()调用生成的,超级标题是fig对象的子项(是的,suptitle()被称为4次,每个子图中有一个).

要解决这个问题:

df = pd.DataFrame({'Emission': np.random.random(12),
                   'Voltage': np.random.random(12),
                   'Power': np.repeat([10,20,40,60],3)})
fig = plt.figure(figsize=(16,9))
i = 0
for Power in [10, 20, 40, 60]:
    i = i+1
    ax = fig.add_subplot(2,2,i)
    subdf = df[df.Power==Power]
    bp = subdf.boxplot(column='Emission', by='Voltage', ax=ax)
fig.texts = [] #flush the old super titles
plt.suptitle('Some title')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


小智 5

您也可以执行此操作而无需先手动创建图形:

ax = df.boxplot(by=["some_column"])
ax.get_figure().suptitle("")
Run Code Online (Sandbox Code Playgroud)