了解Matplotlib中的plt.show()

时间:2018-11-04 11:27:51

标签: numpy matplotlib pycharm

import numpy as np
import os.path

from skimage.io import imread
from skimage import data_dir

img = imread(os.path.join(data_dir, 'checker_bilevel.png'))

import matplotlib.pyplot as plt
#plt.imshow(img, cmap='Blues')
#plt.show()

imgT = img.T
plt.figure(1)
plt.imshow(imgT,cmap='Greys')
#plt.show()

imgR = img.reshape(20,5)
plt.figure(2)
plt.imshow(imgR,cmap='Blues')

plt.show(1)

我读到plt.figure()将为图像创建或分配一个新ID(如果未明确给定ID)。所以在这里,我分别给出了两个数字,ID 1和2。现在,我只希望看到其中一张图像。 我尝试过plt.show(1),只有第一个图像会被显示,但两者都显示。 我该怎么写才能得到一个?

2 个答案:

答案 0 :(得分:1)

plt.clf()将清除数字

import matplotlib.pyplot as plt


plt.plot(range(10), 'r')

plt.clf()


plt.plot(range(12), 'g--')
plt.show()

答案 1 :(得分:0)

plt.show将显示所有创建的图形。您使用的参数强制以非阻塞方式显示图形。如果只想显示一个特定的图形,则可以编写包装函数。

import matplotlib.pyplot as plt

figures = [plt.subplots() for i in range(5)]

def show(figNum, figures):
    if plt.fignum_exists(figNum):
        fig = [f[0] for f in figures if f[0].number == figNum][0]
        fig.show()
    else:
        print('figure not found')