这是有问题的图表,点应该在底层平面中出现,而不是像我管理的那样“在平面之上”。
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个其他图表这样做并且微调每个都会很麻烦。
想要分享一些更简单的方法吗?
答案 0 :(得分:1)
有很多选项,最终,它取决于其他图中数据的范围。
1)将投影点偏移固定量 您可以计算最小Z值,并将投影绘制为与该最小值的固定偏移量。
zs=min(zs)-offset
2)将投影偏移一个取决于数据范围的相对数量。 您可以考虑数据的范围(即从最小值到最大值Z的距离)并计算与其成比例的偏移量(例如10-15%)。
zs=min(zs)-0.15*(max(zs)-min(zs))