plot_surface:获取右下角写的x、y、z值

3 投票
2 回答
2586 浏览
提问于 2025-04-16 21:50

我刚开始使用matplotlib这个库。当我用matplotlib和plot_surface画一个3D图的时候,会弹出一个窗口显示图形。在这个窗口的右下角,会显示鼠标当前位置的坐标。我想知道有没有办法获取到这些坐标值?

我在网上查了一下,但找到的解决方案很少。对于2D图来说,可以通过tkinter.canvas来获取这些坐标,但在3D图中,使用同样的方法时,event.xdata和event.ydata却没有返回正确的鼠标位置。

2 个回答

0

我试了@Thilo的回答,结果只得到了一个浮点数。我使用的是Python 3.8和Matplotlib版本3.2.1。

我把他的函数改成了这样

def getxyz(event):
    s = ax.format_coord(event.xdata, event.ydata)
    out = [float(x.split('=')[1].strip()) for x in s.split(',')]
    print(out)
    return out

非常感谢,因为要不是他的回答,我根本不知道像format_coord这样的东西存在。

8

使用 ax.format_coord(mouseevent.xdata,mouseevent.ydata) 这个代码,你可以得到一个字符串,其中包含了 x、y 和 z 的值,比如 ('x=0.222, y=0.452, z=0.826')。你可以从这个字符串中提取出这些值。

比如说,如果你想获取 y 坐标的话:

def gety(x,y):
    s = ax.format_coord(x,y)
    out = ""
    for i in range(s.find('y')+2,s.find('z')-2):
        out = out+s[i]
    return float(out)

撰写回答