2011-04-04 128 views
5

我正在使用python的matplotlib做一些使用轮廓和contourf函数的轮廓。它们在使用show时都可以正常工作,但是当我尝试在方法内使用draw()时,我得到了matplotlib窗口,但没有显示图形。 show()调用将会在代码中以不同的方法完成,我将在draw()完成时显示一个图形,而不必等到稍后的show()。我做错了什么?matplotlib绘制不显示任何东西

谢谢。

回答

2

IIRC,你应该可以多次调用fig.show()。此外,使用ipython(ipython -pylab)和http://matplotlib.sourceforge.net/users/shell.html

+0

感谢您的回答。问题是我没有使用交互式环境 - 这是一个脚本中的模拟。而且多次调用show的问题是show()是阻塞的,我需要程序在没有用户干预的情况下显示图形后继续运行。 – Ivan 2011-04-04 17:32:26

+0

啊,对。那么不确定。随机想法:如果你不能使用绘图工具来做到这一点,你总是可以将图形导出到图像文件并通过 – dfb 2011-04-04 17:35:11

+0

好吧,谢谢。我试图避免这一点 - 我需要一个图来决定结果是否会被保存。 – Ivan 2011-04-04 17:45:43

7

检查出您是否使用ion()开启了交互模式?对我来说,以下的作品在OSX用TK后端,并从shell命令行中运行:

import matplotlib.pyplot as plt 

plt.ion() 
plt.figure() 
for i in range(10): 
    plt.plot([i], [i], 'o') 
    plt.draw() 
raw_input("done >>") 

也就是说,因为它的每个循环中,你看到的情节变化(即,它被重绘)为每点被添加。在这里,顺便说一句,如果我反而打电话plt.ioff(),我没有看到数字或任何更新。

+0

如果我运行该代码,我得到一个内核崩溃...... :( – 2015-08-25 15:34:48

+1

@andi:我认为可能是你的环境设置不正确,我再次运行这个检查它,它仍然适用于我,但现在, 4年以上使用不同的计算机,版本,环境等。如果你无法使用它,我建议问一个单独的问题与更多细节(例如,plt.ion()在其他情况下为你工作,你使用的是什么版本,等等) – tom10 2015-08-25 19:26:20

+0

你是绝对正确的!重新安装anaconda,它完美的工作,对不起。 – 2015-08-26 11:02:21