Matplotlib绘图并等待原始输入

10

我想打开一系列的 .png 图形。我希望能够在屏幕上查看绘图,然后得到一个等待我“按Enter”的提示。按下Enter键后,应该显示下一个图形。我看到过许多类似这样的问题(Matplotlib - Force plot display and then return to main code),但当我这样做时,我就必须手动点击绘图窗口右上角的 X 才能关闭它,然后代码才会继续运行。

我正在使用 Python 2.7.8

这是我的代码:

from PIL import Image
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import string
import sys
import shutil

fig=plt.figure()

Viewingfile = sys.argv[1]


for test_file in open(Viewingfile, "r").readlines(): 

    fig.set_tight_layout(True)
    plt.ion()
    image=mpimg.imread(test_file + ".ps.png")
    ax = fig.add_subplot(1, 1, 1)
    imgplot = plt.imshow(image)
    plt.show()

    print test_file
    a = raw_input('Next plot?\n')
    if a == "1":
        print "Do something..I've skipped these details"
    plt.clf()

plt.close()

虽然我无法回答这个问题,但使用IPython笔记本电脑代替原始输入对于这个项目是否可行呢?这仍然可以让您实时内联绘图。 - Adam Hughes
我从未使用过IPython笔记本。我有很多图片(数千张)需要查看,你认为使用笔记本是否可行? - user1958508
在我看来这样更有意义。您可以随时将要保留的图像存储在笔记本中。以下是一个示例,显示了笔记本中的绘图/图像:http://nbviewer.ipython.org/github/vanzaj/pyconsg2013-tut/blob/master/ipynb/04-Pandas-Scikits.ipynb专业提示:如果笔记本单元格的最后一行是绘图/图像调用,则会打印出对象类型(例如AxesSubplot)。在单元格中结束最后一个调用时加上分号以抑制此功能。例如:plt.plot(x,y); - Adam Hughes
1个回答

16

最近版本的matplotlib,您可以使用调用plt.show(block=False)来打开matplotlib窗口并使其非阻塞。


这正是我正在寻找的。谢谢! - user1958508
当我将上面的行改为 block=False 时,图形实际上不再显示。 - Hephaestus
1
@Hephaestus,使用plt.pause(0.1) - Yariv

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