绘制表面图:获取右下角写有x、y、z值的内容。

3
我是Matplotlib的新用户。在使用Matplotlib的plot_surface绘制3D表面图时,会出现一个带有图形的窗口。在该窗口中,鼠标位置的坐标显示在右下角。是否可以访问这些值?
我在互联网上搜索了很多解决方案,但提供的解决方案很少。对于2D图,可以使用tkinter.canvas来访问这些值,但在3D图中,使用相同的技术时,event.xdata和event.ydata并没有返回正确的鼠标位置。
2个回答

8
使用ax.format_coord(mouseevent.xdata,mouseevent.ydata)可以得到一个字符串('x=0.222, y=0.452, z=0.826'),其中包含了x、y、z值。您可以从中提取这些值。例如,要获取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)

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这样的东西存在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接