Matplotlib - plot_surface:获取写在右下角的x,y,z值

时间:2011-07-19 13:47:45

标签: python canvas matplotlib tkinter mouseevent

我是matplotlib的新用户。使用matplotlib和plot_surface绘制曲面(3D)时,会出现一个带有图形的窗口。在那个窗口中,右下角有鼠标实际位置的坐标。是否有可能获得这些价值?

我在互联网上搜索,但提出的解决方案很少。对于2D绘图,可以使用tkinter.canvas访问这些值,但在3D中,当使用相同的技术时,event.xdata和event.ydata不会返回鼠标的良好位置。

提前感谢您的宝贵帮助,

安托

2 个答案:

答案 0 :(得分:6)

使用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)

答案 1 :(得分: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这样的东西。