【问题标题】:Python figure crashing and is unresponsivePython图崩溃并且没有响应
【发布时间】:2016-08-29 16:33:14
【问题描述】:

我正在尝试制作一个脚本,它会到达每个点并保存情节的图形,如果该点是好的与否。但这个数字只是没有反应/空白。有什么想法吗?

import matplotlib.pyplot as plt

A = range(-3, 3, 1)

for moving in range(len(A)):
    parsedFile = 'TEST/data_%d' % (moving)

    plt.figure(1)
    plt.plot(A)
    plt.plot(A[moving],"rx")

plt.show(block=False)
plotChoice = raw_input("Is this a good value? (y/n): ")

if plotChoice == 'y':
    plt.savefig(parsedFile + '.jpg', pdi=1000)
    plt.clf()
    plt.close()
else:
    plt.clf()
    plt.close()

使用 PyCharm 运行

【问题讨论】:

    标签: python debugging figure


    【解决方案1】:

    在非交互模式下plt.show() 会一直阻塞,直到图窗关闭。根据文档,block 参数是实验性的,在我看来,它不适用于您的情况。好吧,至少它对我不起作用。

    要与绘图的用户交互,您可以使用Button 小部件。两个按钮“是”和“否”可以直接放置在绘图中。在这里你可以找到一个例子:http://matplotlib.org/examples/widgets/buttons.html

    按钮的放置并不简单,所以为了简化一点,我使用了问题的情节标题并在旁边添加了按钮。可能看起来很丑,请随意调整以适应您的需求:

    import matplotlib.pyplot as plt
    from matplotlib.widgets import Button
    
    ax = plt.subplot()
    plt.title('Is this a good value?')
    
    A = range(-3, 3, 1)
    
    for moving in range(len(A)):
        parsedFile = 'TEST/data_%d' % moving
    
        ax.plot(A)
        ax.plot(A[moving], 'rx')
    
    def yes(event):
        plt.savefig(parsedFile + '.jpg', pdi=1000)
        plt.clf()
        plt.close()
    
    def no(event):
        plt.clf()
        plt.close()
    
    yes_axes = plt.axes([0.69, 0.91, 0.1, 0.075])
    yes_button = Button(yes_axes, 'Yes')
    yes_button.on_clicked(yes)
    
    no_axes = plt.axes([0.80, 0.91, 0.1, 0.075])
    no_button = Button(no_axes, 'No')
    no_button.on_clicked(no)
    
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 2021-12-16
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 2022-06-30
      相关资源
      最近更新 更多