Matplotlib使用plt.show()打开2个窗口

时间:2018-12-26 22:25:37

标签: python pandas matplotlib

在我的项目中,我使用了2个带有plt.show()的图形,第一个正确运行,但是第二个创建了2个窗口,其中1个正确地命名为“ Figure 2”,而1个在窗口上没有任何显示。屏幕上,只有“功能栏”,名为“图1”(与第一个图类似)。我该如何创建正确的窗口?

x = pd.DataFrame(maindf[missao_unica].value_counts())
plt.figure(figsize=(20,12), dpi=200)
plt.subplots_adjust(wspace = .5)
plt.subplot(1,3,1)
plt.pie(x[missao_unica].tolist(), labels=x.index.tolist(),autopct='%1.1f%%',shadow=False, startangle=90)
plt.title('Contagem(%)')
plt.subplot(1,3,2)
sns.heatmap(x,cmap='inferno_r')
plt.title('Contagem(Valor Absoluto)')
plt.subplot(1,3,3)
plt.title('Coeficientes')
sns.countplot(maindf[missao_unica],dodge=None)
plt.savefig('Imagens\Missões.png')
plt.show()

1 个答案:

答案 0 :(得分:0)

如果直接使用matplotlib对象而不是依靠pyplot状态机,则可以避免这种情况。另外,您将拥有更明确和可维护的代码。

这里最主要的是使用plt.subplots()提前设置所有图形和轴,然后显式地对这些对象进行操作,并将它们直接传递给您要使用的seaborn函数。 / p>

x = pd.DataFrame(maindf[missao_unica].value_counts())
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(20, 12), dpi=200)
fig.subplots_adjust(wspace=0.5)
axes[0].pie(x[missao_unica].tolist(), labels=x.index.tolist(),
            autopct='%1.1f%%', shadow=False, startangle=90)
axes[0].set_title('Contagem(%)')

sns.heatmap(x, cmap='inferno_r', ax=axes[1])
axes[1].set_title('Contagem(Valor Absoluto)')

axes[2].set_title('Coeficientes')
sns.countplot(maindf[missao_unica], dodge=None, ax=axes[2])

# note the use raw strings for paths with back-slashes
fig.savefig(r'Imagens\Missões.png')
plt.show()