plot_surface:获取右下角写的x、y、z值
我刚开始使用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)