2015-06-05 81 views
3

我想通過鼠標事件(如點擊)獲取三維圖中的座標(x,y,z)。 MATLAB有這個功能,datacursormode。一個好的圖像在以下鏈接。matplotlib:通過mouseevent獲取三維圖中的座標

http://www.mathworks.com/help/matlab/ref/datacursormode.html

mpldatacursorhttps://github.com/joferkington/mpldatacursor)是matplotlib類似的功能,但是,這似乎是不適合3D繪圖。即使可以得到,x和y值也不適用。

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import numpy as np 
from mpldatacursor import datacursor 

x = np.arange(-3, 3, 0.25) 
y = np.arange(-3, 3, 0.25) 
X, Y = np.meshgrid(x, y) 
Z = np.sin(X)+ np.cos(Y) 

fig = plt.figure() 
ax = Axes3D(fig) 
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1) 

datacursor(surf) 

plt.show() 

我也想得到z值,如果有可能的話。 有什麼好方法嗎?

+0

令人驚訝的是,這似乎不受支持。 – MattClimbs

回答

0

根據你建議的鏈接文件「changelog.rst」(https://github.com/joferkington/mpldatacursor),該功能已於2015年7月添加。不幸的是,它看起來像從鼠標點擊的位置提取數據點而不是原始位置數據集。這導致結果中的一些不精確。 根據Get data from plot with matplotlib中爲2D版本提供的說明,可能會修改數據光標。希望這可以幫助。 enter image description here