如何在mplot3d(matplotlib + python)中获取选定对象的属性?
若要获取matplotlib 3d中选择对象的属性,可以执行以下步骤。
步骤
- 设置图形大小,并调整子图之间和周围填充大小。
-
创建一个新图形或激活现有图形。
-
将 ‘ax’ 添加到图形中作为子图中的一部分。
-
绘制随机数据点的散点图。
-
将函数 pick_event_method 绑定到事件 pick_event 上。
-
打印事件的 x,y 和 z 坐标。
-
使用 Show() 方法显示图形。
例子
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 散点图
ax.scatter(np.random.rand(10), np.random.rand(10), np.random.rand(10), c=np.random.rand(10),
cmap='hot', picker=5, s=100)
# pick_event_method
def pick_event_method(event):
ind = event.ind[0]
x, y, z = event.artist._offsets3d
print(x[ind], y[ind], z[ind])
# Connect pick_event_method with pick_event
fig.canvas.mpl_connect('pick_event', pick_event_method)
plt.show()
输出
它将产生以下输出−
现在,单击绘图中的对象,会在控制台上显示这些点的坐标。
0.29471404722373373 0.7272382336952506 0.551701540876738
0.7393059098968329 0.880733225356321 0.20733995579556608
0.4055966753557102 0.9709122739514328 0.10116103589732084
0.2781962334047674 0.48531626106129566 0.8573607199598575