我遇到Matplotlib 1.0.1
的问题我创建了一个数字,当我点击图中时,我使用onclick事件来做事情。有一点是,它必须创建一个包含新数据的新数字。这完全适用于Matplotlib 0.99.3,在那里我开发了脚本,但是现在一个同事在他的机器上尝试了它,它有matplotlib 1.0.1(和python 2.6而不是2.7),并且没有显示图。
但是,我认为该图是创建的,但未显示,因为如果我关闭第一个图,脚本没有结束,它仍然在运行。
这是一个简单的示例代码:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
a = [1,2,3]
b = [4,2,9]
line = ax.plot(a,b)
def onclick(event):
print "clicked"
a = [7,8,9]
b = [1,9,20]
fig2 = plt.figure()
ax_single = fig2.add_subplot(111)
line2 = ax_single.plot(a,b)
cid = fig.canvas.mpl_connect('button_press_event',onclick)
plt.show()
这是matplotlib 1.0.1中的(已知)错误吗?有什么方法吗?
THX。
答案 0 :(得分:2)
添加一个简单的fig2.show()对我有用。阅读How-to以获取更多信息!
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
a = [1,2,3]
b = [4,2,9]
line = ax.plot(a,b)
def onclick(event):
print "clicked"
a = [7,8,9]
b = [1,9,20]
fig2 = plt.figure()
ax_single = fig2.add_subplot(111)
line2 = ax_single.plot(a,b)
fig2.show()
cid = fig.canvas.mpl_connect('button_press_event',onclick)
plt.show()
在主循环启动后matplotlib处理数字的方式确实是1.0.0的变化。
答案 1 :(得分:0)
您可以在开头将Pyplot置于交互模式:
plt.ion()
然后以类似
的方式结束你的程序raw_input('Press enter when done...')
(而不是show()
)。
使用Matplotlib 1.0更新了{{1}}和交互模式的语义。您可以在StackOverflow上获取有关此内容的更多信息:Exact semantics of Matplotlib's "interactive mode" (ion(), ioff())?。我知道使用交互模式(show()
)通常更方便。另一个重要的一点是,在交互模式下,只有ion
个函数会自动绘制/重绘图(而不是pyplot.*
个方法)。