没有重复的答案,因为我总是被下面的解决方案阻止!!!!!!!
我想绘制一个图形,并且仍然运行以下代码,而无需像Matlab那样自动关闭图形。
我尝试plt.show(block=False),但它失败了,一会儿出现然后合上。
代码:
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
plt.figure(figsize=(10, 10))
plt.plot(range(5), lw=2, label='Real')
plt.title('Prediction')
plt.legend(loc="best")
plt.show(block=False)
print("---Plot graph finish---")
我尝试plt.draw() or interactive mode,它也失败了。检查下面的代码。
代码:
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
plt.figure(figsize=(10, 10))
plt.plot(range(5), lw=2, label='Real')
plt.title('Prediction')
plt.legend(loc="best")
plt.draw()
plt.show()
print("---Plot graph finish---")
上面将阻止直到我关闭它。
代码:
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
plt.ion()
plt.figure(figsize=(10, 10))
plt.plot(range(5), lw=2, label='Real')
plt.title('Prediction')
plt.legend(loc="best")
plt.draw()
plt.show()
print("---Plot graph finish---")
以上将什么也不会出现,或者它很快就会消失。
我的版本如下:
user@ya:~/$ sudo pip freeze | grep matplotlib
matplotlib==2.2.3
user@ya:~/$ sudo pip -V
pip 18.1 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
环境:
I only execute script in Ubuntu ex: user@ya: python xxx.py
Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial
有人可以帮助我吗?我只想做Matlab,即使脚本完成也不会关闭绘制的图形。
答案 0 :(得分:0)
脚本完成后,即使您使用block=False
类似于答案here,从终端运行时,必须在脚本结尾处调用plt.show
,以在完成后保持这些图的打开状态。我编写了与您相似的代码,可以正常工作;该图仅在代码末尾刷新。 (添加了for循环5秒钟的延迟,以便您可以看到它正在运行)。
import numpy as np
import matplotlib.pyplot as plt
import time
if __name__ == '__main__':
plt.figure(figsize=(10, 10))
plt.plot(range(5), lw=2, label='Real')
plt.title('Prediction')
plt.legend(loc="best")
plt.show(block=False)
print("---Plot graph finish---")
for i in range(5):
print('waiting...{}'.format(i))
time.sleep(1)
print('code is done')
plt.show()