如何将 3D 散点投影到 xy 平面上?

How to project 3D scatter points onto the xy-plane?

这是有问题的图表,点应该 出现在 底部平面中,而不是 "above" 我设法出现的平面中。

bx.scatter(xs,ys,zs, zdir=zs,c=plt.cm.jet(np.linspace(0,1,N))) # scatter points
for i in range(N-1):
    bx.plot(xs[i:i+2], ys[i:i+2], zs[i:i+2], color=plt.cm.jet(i/N), alpha=0.5) 
   #plots the lines between points
bx.scatter(xs,ys,zs=732371.0,zdir="z",c=plt.cm.jet(np.linspace(0,1,N)),depthshade=True)   
 bx.set_zlim3d(732371.0,) #limit is there so that we can project the points onto the xy-plane

你会注意到这些点绘制在 xy 网格上方,我必须为 z 轴设置一个下限,以便第一个投影点不会干扰第一个散点

我希望这些点是 2d 的并且不那么复杂,因为我有 50 个其他图表可以这样做并且微调每个图表会很麻烦。

有更简单的方法要分享吗?

有很多选择,最终还是要看你在其他图中的数据范围。

1) 将投影点偏移固定量 您可以计算最小 Z 值,并绘制您的投影与该最小值的固定偏移量。

zs=min(zs)-offset

2) 根据数据范围偏移投影的相对量。 您可以考虑数据的范围(即从最小 Z 到最大 Z 的距离)并计算与之成比例的偏移量(例如 10-15%)。

zs=min(zs)-0.15*(max(zs)-min(zs))