我将三维散点图数据分组绘制成三个不同的聚类:一个是红色,一个是绿色,一个是蓝色。
我遇到的问题是,当群集与摄像机一致旋转时,观察者不会按照您通常预期的空间顺序显示群集(即:最近的群集应该遮挡那些群集)距离相机最远)。相反,我看到堆叠优先级由颜色决定(在这种情况下为R-> G-> B),红色优先于绿色,绿色优先于蓝色。
在以下链接中,红色群集应隐藏在绿色背后,而不是覆盖在绿色背后。 http://imgur.com/TdjW9aI
那么,什么控制散点图数据的堆叠顺序(排列)以及如何更改它以便按照接近相机的顺序给出显示优先级?
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()
答案 0 :(得分:1)
请参阅matplotlib的these limitations以进行3D绘图。
如果您需要动态良好的视图(即移动绘图的能力),我认为没有解决方案。如果不这样做,您可以将zorder
关键字传递给所有绘图调用并获得您想要的结果。