You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从鼠标点击事件中获取Matplotlib坐标轴的索引?

问题解答

1. Axes输出的第一个属性名称

打印Axes对象时,输出格式Axes(x0, y0; widthxheight)中的第一个数值是归一化画布坐标下的Axes左边界位置,对应Axes对象的get_position()方法返回的Bbox对象的x0属性。

你可以通过代码验证:

print(axs[0].get_position().x0)  # 输出类似0.102541的数值

这个值以画布左下角为原点(0,0)、右上角为(1,1)的归一化坐标系,代表Axes在水平方向的起始位置。

2. 获取被点击的axs索引的简便方法

有两种实用的实现方式:

方式一:给Axes绑定自定义索引属性

创建Axes时,直接为每个子图添加索引标记:

fig, axs = plt.subplots(ncols=2, nrows=1, figsize=(3.5, 2.5), layout="constrained")
for idx, ax in enumerate(axs):
    ax.index = idx  # 自定义索引属性
    ax.plot(np.random.rand(10))

def onclick(event):
    if event.inaxes:
        print("点击的axs索引:", event.inaxes.index)

方式二:通过fig.axes列表匹配索引

如果画布上的Axes都是由subplots创建的,fig.axes的顺序和axs完全一致,可以直接通过列表索引获取:

def onclick(event):
    if event.inaxes:
        idx = list(fig.axes).index(event.inaxes)
        print("点击的axs索引:", idx)

注意:如果画布上存在额外创建的Axes,这种方式可能返回错误索引,此时方式一更可靠。

内容的提问来源于stack exchange,提问作者Paul Jurczak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:22:57