Matplotlib:用户缩放后如何更新图标题?

时间:2016-08-05 03:30:29

标签: python matplotlib

用户放大后,有没有办法更新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()

1 个答案:

答案 0 :(得分:1)

您可以在xlim_changedylim_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