繁体   English   中英

无论我做什么,Matplotlib 交互模式都不起作用

[英]Matplotlib interactive mode won't work, no matter what I do

我在 Pycharm 社区 2020.1 上使用 python 3.7.7 和 matplotlib 3.3.1

我想绘制一个图形并让用户通过提供一些控制台输入来决定他是否喜欢该图形。 这意味着我需要 matplotlib 才能在交互模式下工作。 我尝试了以下多种方法,这些方法是我在网上找到的:

plt.ion() 单独

import matplotlib.pyplot as plt
plt.ion()
plt.plot([1,2,3])
plt.show()


print('is this fig good? (y/n)')
x = input()
if x=="y":
    plt.savefig(r'C:\figures\papj.png')
else:
    print("big sad")

这只会导致空白图形窗口。 如果您过多地单击该窗口,它将“停止响应”。

plt.show(块=假)

import matplotlib.pyplot as plt    
plt.plot([1,2,3])
plt.show(block=False) 

print('is this fig good? (y/n)')
x = input()
if x=="y":
    plt.savefig(r'C:\figures\papj.png')
else:
    print("big sad")

结果和之前一样。

plt.draw()

import matplotlib.pyplot as plt

plt.plot([1,2,3])
plt.draw()


print('is this fig good? (y/n)')
x = input()
if x=="y":
    plt.savefig(r'C:\figures\papj.png')
else:
    print("big sad")

这什么都不做,只是在控制台中显示问题。

plt.ion() 和 plt.draw()

import matplotlib.pyplot as plt
plt.ion()
plt.plot([1,2,3])
plt.draw()


print('is this fig good? (y/n)')
x = input()
if x=="y":
    plt.savefig(r'C:\figures\papj.png')
else:
    print("big sad")

再次,空白图形窗口,单击它后崩溃。

ion() 和 block=False

import matplotlib.pyplot as plt
plt.ion()
plt.plot([1,2,3])
plt.show(block=False)


print('is this fig good? (y/n)')
x = input()
if x=="y":
    plt.savefig(r'C:\figures\papj.png')
else:
    print("big sad")

再次,空白图形窗口,单击它后崩溃。

我该怎么做才能使其正常工作?

您需要添加一个pause以避免图形被“锁定”并在图形仍在显示时获取用户输入。

import matplotlib.pyplot as plt
plt.ion()
plt.plot([1,2,3])
plt.pause(0.01) # <---- add pause
plt.show()

print('is this fig good? (y/n)')
x = input()
if x=="y":
    plt.savefig(r'C:\figures\papj.png')
else:
    print("big sad")

如果您想要比这更复杂的东西,您将有一个循环,您可以在每次迭代中重绘图形(例如,如果您想显示不同的图形)并在每次迭代结束时暂停。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM