我准备用matplotlib三维图,我有一个非常奇怪的行为与多个数据集。我有两个数据集,基本上描述了3d中的两个壳:一个内壳和一个外壳。要在3D中绘制它们,请执行以下操作:Pyplot三维散点:在前面的重叠点的点
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(outer_z[:n], outer_x[:n], outer_y[:n], c='black', marker='.', lw=0)
ax.scatter(inner_z[:n], inner_x[:n], inner_y[:n], c='red', marker='.', lw=0)
ax.set_xlabel("Z")
ax.set_ylabel("X")
ax.set_zlabel("Y")
ax.set_xlim([-5,5])
ax.set_ylim([5,-5])
ax.set_zlim([-5,5])
(轴的顺序仅用于透视目的)。当我保存这个数字,但是,我没有得到两发炮弹:
我得到一个层上,另一方面也与该显然是出现在前面后面的点。你可以在图片上看到,应该在内壳后面的外壳的一些点被绘制在内壳的前面。这真的很烦人,因为它不追求“3D情节”的目的。有没有人有一个想法,为什么会发生这种情况,如何解决这个问题? 非常感谢!
我是思考,如果你决定手动做,我有一个想法如何做到这一点。您必须选择一个点作为您的视角(相机所在的位置)和相机指向的方向。然后,从这里有一个公式可以确定点在这个方向上的距离(使用点到平面公式的距离),您可以将它用于zorder参数。让我知道你是否好奇追求这一点,我们可以尝试一下。但是如实地,您可能需要为这个项目寻找其他工具(带有真正的3D引擎)。 – breeden