Matplotlib:缩放后找出xlim和ylim

var*_*tir 9 python matplotlib

你肯定知道如何快速地在放大后如何追踪我的身材的极限?我想精确地知道坐标,所以我可以用ax.set_xlim和重现这个图ax.set_ylim.我正在使用标准的qt4agg后端.

编辑:我知道我可以用光标找出下角和上角的两个位置,但也许有正式的方法可以做到这一点?

mat*_*tjw 23

matplotlib有一个事件处理API,你可以用来挂钩你所指的那些动作." 事件处理"页面概述了事件API,并在" 轴"页面上(非常)简要提及了x和y限制事件.

在您的场景中,您需要在Axes对象xlim_changedylim_changed事件上注册回调函数.只要用户缩放或移动视口,就会调用这些函数.

这是一个最小的工作示例:

import matplotlib.pyplot as plt

#
# Some toy data
x_seq = [x / 100.0 for x in xrange(1, 100)]
y_seq = [x**2 for x in x_seq]

#
# Scatter plot
fig, ax = plt.subplots(1, 1)
ax.scatter(x_seq, y_seq)

#
# Declare and register callbacks
def on_xlims_change(axes):
    print "updated xlims: ", ax.get_xlim()

def on_ylims_change(axes):
    print "updated ylims: ", ax.get_ylim()

ax.callbacks.connect('xlim_changed', on_xlims_change)
ax.callbacks.connect('ylim_changed', on_ylims_change)

#
# Show
plt.show()
Run Code Online (Sandbox Code Playgroud)

  • @eatcrayons这是正确的,因为`axes`没有定义; 它需要是`ax.get_xlim()` - 我编辑了答案. (2认同)