Matplotlib mplot3d彩色散点数据叠加显示优先级

Matplotlib mplot3d彩色散点数据叠加显示优先级,matplotlib,3d,scatter-plot,mplot3d,Matplotlib,3d,Scatter Plot,Mplot3d,我正在绘制三维散射数据,这些数据分为三个不同的簇:一个是红色的,一个是绿色的,还有一个是蓝色的 我遇到的问题是,当簇与摄影机成一直线旋转时,查看器不会按照您通常期望的空间顺序显示簇(即:最近的簇应该遮挡距离摄影机最远的簇)。相反,我看到堆叠优先级是由颜色决定的(在本例中为R->G->B),红色优先于绿色,绿色优先于蓝色 在下面的链接中,红色的簇应该隐藏在绿色的后面,而不是它上面。 那么,是什么控制散射数据的堆叠顺序(排列)以及我如何更改它,以便按照接近相机的顺序给出显示优先级 from pyl

我正在绘制三维散射数据,这些数据分为三个不同的簇:一个是红色的,一个是绿色的,还有一个是蓝色的

我遇到的问题是,当簇与摄影机成一直线旋转时,查看器不会按照您通常期望的空间顺序显示簇(即:最近的簇应该遮挡距离摄影机最远的簇)。相反,我看到堆叠优先级是由颜色决定的(在本例中为R->G->B),红色优先于绿色,绿色优先于蓝色

在下面的链接中,红色的簇应该隐藏在绿色的后面,而不是它上面。

那么,是什么控制散射数据的堆叠顺序(排列)以及我如何更改它,以便按照接近相机的顺序给出显示优先级

from pylab import *
from numpy import *
from mpl_toolkits.mplot3d import axes3d

fig = figure()
ax = fig.gca(projection='3d')

# plot points in 3D
class1 = 0.5 * random.standard_normal((200,3))
ax.plot(class1[:,0],class1[:,1],class1[:,2],'o')
class2 = 0.7 * random.standard_normal((700,3)) + array([5,4,0])
ax.plot(class2[:,0],class2[:,1],class2[:,2],'o')
class3 = 0.3 * random.standard_normal((200,3)) + array([2,3,2])
ax.plot(class3[:,0],class3[:,1],class3[:,2],'o')

ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')

plt.show()
有关三维打印,请参见matplotlib的


如果您需要动态良好的视图(即移动绘图的能力),我认为没有解决方案。如果不这样做,您可以将
zorder
关键字传递给所有绘图调用,并获得您想要的结果。

谢谢Giulio。不幸的是,我需要动态地查看数据。我会调查玛亚维的。