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

在JupyterLab中使用Matplotlib存储两次鼠标点击坐标失败的问题求助

在JupyterLab中使用Matplotlib存储两次鼠标点击坐标失败的问题求助

我现在在JupyterLab里尝试用交互式Matplotlib图表存储两次鼠标点击的坐标。目前已经能实现点击图表时打印出x和y坐标,但尝试把这些坐标添加到全局列表coords或者numpy数组里的时候,数据就是存不进去。

我能成功获取单次点击的ix和iy,虽然可以拆分成两个单元格分别处理一次点击,但我更想用一个单元格完成两次点击坐标的存储。我的初始代码是参考相关问题修改的,为了适配ipympl和ipywidgets做了一些调整。

奇怪的是,虽然判断coords长度的if语句能正常终止点击事件,但最后打印coords的时候它还是空的。我刚从MATLAB转Python,可能漏掉了一些明显的点,希望能得到大家的建议或者替代方案。

我的代码如下:

%matplotlib ipympl
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from scipy import stats
import os
import ipywidgets as widgets

out = widgets.Output()
coords = []

fig, ax = plt.subplots(figsize =(4, 4))
ax.plot(time,temp,'k-',linewidth = 1.5)
ax.set_xlabel("Time (sec)")
ax.set_ylabel(r"Temperature ($\degree$ C)")
ax.tick_params(axis="both",direction='in',top=True, right=True)
plt.show()

@out.capture()
def onclick(event):
    ix, iy = event.xdata, event.ydata
    print ('x = ',ix, 'y = ',iy)
    global coords
    coords.append(ix)
    coords.append(iy)
    # Disconnect after 2 clicks
    if len(coords) == 4:
        fig.canvas.mpl_disconnect(cid)
        return coords

cid = fig.canvas.mpl_connect('button_press_event', onclick)
display(out)
print(coords)

附:交互图表和打印坐标的截图(供参考)

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 10:18:09