【问题标题】:PyCharm: How to display multiple plots with plt.show()? [duplicate]PyCharm:如何使用 plt.show() 显示多个图? [复制]
【发布时间】:2021-02-14 14:01:42
【问题描述】:

我在代码的不同部分使用了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 PyCharm,macOS
  • 哦,所以希望一些 pycharm 用户可以帮助你:)
  • 另外,这与你使用的IDE无关。

标签: python macos matplotlib pycharm visualization


【解决方案1】:

@SimonFromme 的 cmets 是正确的:

  • 您创建图形,然后只调用一次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)

【讨论】:

    猜你喜欢
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 2018-07-02
    • 2020-06-28
    • 1970-01-01
    相关资源
    最近更新 更多