用户放大后,有没有办法更新Matplotlib图的标题?例如,我希望标题显示x轴的确切扩展,
import pylab as pl
import numpy as np
x = np.arange(10,step=0.1)
y = np.sin(x)
f = pl.figure()
pl.plot(x,y)
def my_ondraw(ev):
x1,x2 = f.gca().get_xlim() # FIXME value hasn't been updated yet
pl.title("x = [%f, %f]" % (x1,x2))
f.canvas.mpl_connect('draw_event', my_ondraw)
pl.show()
如上所述,我的代码没有从get_xlim()获得正确的值,因为在调用my_ondraw时没有重新绘制...
有什么建议吗?
根据Ilya的建议修改工作的代码:
import pylab as pl
import numpy as np
x = np.arange(10,step=0.1)
y = np.sin(x)
f = pl.figure()
ax = f.gca()
pl.plot(x,y)
def my_ondraw(ev):
print "my_ondraw: %s" % ev.name
x1,x2 = f.gca().get_xlim() # FIXME value hasn't been updated yet
pl.title("x = [%f, %f]" % (x1,x2))
ax.callbacks.connect('xlim_changed', my_ondraw)
pl.show()
答案 0 :(得分:1)
您可以在xlim_changed
和ylim_changed
事件中注册回调函数。尝试这样的事情:
def on_xylims_change(axes):
x1,x2 = f.gca().get_xlim() # FIXME value hasn't been updated yet
pl.title("x = [%f, %f]" % (x1,x2))
fig, ax = pl.subplots(1, 1)
ax.callbacks.connect('xlim_changed', on_xylims_change)
ax.callbacks.connect('ylim_changed', on_xylims_change)
您可以在此处详细了解:Event handling and picking in Matplotlib。