如何将三维散点投影到xy平面上?

时间:2018-01-03 13:49:04

标签: python matplotlib 3d scatter-plot

这是有问题的图表,点应该在底层平面中出现,而不是像我管理的那样“在平面之上”。 enter image description here

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而且不那么hacky,因为我有50个其他图表这样做并且微调每个都会很麻烦。

想要分享一些更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

有很多选项,最终,它取决于其他图中数据的范围。

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

zs=min(zs)-offset

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

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