PyCharm: 如何使用plt.show()显示多个图表?

3

我在代码的不同部分使用了plt.show()来展示一些图形。但是每次执行plt.show()命令后,只有关闭当前图形后才能继续执行。如何在无需关闭当前图形的情况下展示所有图形?

例子:

import pandas as pd 
import seaborn as sn
import matplotlib.pyplot as plt
    
data = {'A': [45, 31, 42, 35, 39], 
        'B': [38, 31, 26, 28, 33], 
        'C': [10, 15, 17, 21, 12], 
        'D': [9, 14, 16, 22, 141]} 
df = pd.DataFrame(data, columns=['A', 'B'])
corrMatrix = df.corr()
sn.heatmap(corrMatrix, annot=True)
    
plt.show()  # this should be closed to continue
    
df = pd.DataFrame(data, columns=['C', 'D'])
corrMatrix = df.corr()
sn.heatmap(corrMatrix, annot=True)
    
plt.show()

顺便提一下,我正在macOS上使用PyCharm


你使用的是什么集成开发环境(IDE)或者编程环境?在Jupyter中,它实际上不会关闭最后一个图形,而是将其显示在下面。 - Marcin
1
@Marcin PyCharm,macOS - ECub Devs
哦,希望有一些PyCharm用户能够帮助你 :) - Marcin
1
此外,这与您使用的集成开发环境无关。 - Simon Fromme
1个回答

1

@SimonFromme的评论是正确的:

  • 你需要先创建图形,然后只调用一次plt.show
  • 这与IDE无关(除了jupyter可能有影响)

但是,为了得到你想要的结果,你需要显式地创建两个图像,并在每个图像中绘制热力图。默认情况下,似乎seaborn.heatmap只使用一个图形和一个轴。

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

fig1, ax1 = plt.subplots()
fig2, ax2 = plt.subplots()

data = {'A': [45, 31, 42, 35, 39], 
        'B': [38, 31, 26, 28, 33], 
        'C': [10, 15, 17, 21, 12], 
        'D': [9, 14, 16, 22, 141]} 
df = pd.DataFrame(data, columns=['A', 'B'])
corrMatrix = df.corr()
sn.heatmap(corrMatrix, annot=True, ax=ax1)

df = pd.DataFrame(data, columns=['C', 'D'])
corrMatrix = df.corr()
sn.heatmap(corrMatrix, annot=True, ax=ax2)

plt.show()

如果一个带有两个轴的图形对你来说已经足够好了,那么你可以用它替换掉这两个子图。
fig, (ax1, ax2) = plt.subplots(ncols=2)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接