我已经问了一个类似的问题here,并且几乎自己找到了答案。唯一剩下的事情是:我使用meshgrid
来创建一个3D网格。当在color_map.set_array(colo)
中指定颜色时,我使用了一个与meshgrid
中的元素大小相同的数组。但是如何对这个数组进行排序以产生正确的绘图?
x=[7, 8, 9, 10, 11, 12]
y= [0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
z= [0.1, 0.2, 0.3, 0.4, 0.5, 0.6]
colo=np.random.normal(0, 1, 216)
X,Y,Z = np.meshgrid(x,y,z)
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection='3d')
color_map = cm.ScalarMappable(cmap=cm.Greens_r)
color_map.set_array(colo)
img = ax.scatter(X, Y, Z, marker='s',
s=200, color='green')
plt.colorbar(color_map)
1条答案
按热度按时间whitzsjs1#
假设
y
、x
和z
的长度分别为6、5和4(我给每个轴一个唯一的长度,以便很容易区分它们)。从np.meshgrid(x, y, z)
开始的(X
、Y
和Z
)将是6x5x4。这意味着您的数据需要以(y, x, z)
进行结构化。否则,数据不会与网格的排列对齐。你不需要展平数据。如果数据不是
(y, x, z)
的格式,请将其重新排列为该格式。然后,您可以将其给予ax.scatter
中的颜色参数(c=
),如下所示: