我目前正在将两个完全不同的数据集绘制成一个3D表面图。当我独立策划每一个时,一切正常。但是,只要我将它们合二为一,可视化就很奇怪了。我按以下方式进行绘图:
fig = plt.figure(figsize=(20,10))
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X,Y,Z, color=color, antialiased=True)
(get new X,Y, Z values)
ax.plot_surface(X,Y,Z, color=color, antialiased=True)
ax.view_init(30, 360)
输出如下:
正如您所看到的,蓝色数据是正确的,但绿色数据在某种程度上位于背面并且未正确显示。如果我单独绘制绿色的那个,那就完美了。
更改绘图的顺序(或使用zorder进行游戏)不会改变任何内容。
希望有人可以提供帮助!
答案 0 :(得分:0)
Matplotlib只是一个2D绘图库。通过将3d表面投影到图像平面上来实现3d图。
如果你有多个3d表面,它会将每个表面变为2d形状,然后计算每个形状的单个高度,然后按顺序显示。
据我所知,zorder选项不起作用,并且无论如何都会改变曲面的顺序。
如果你真的不走运,构成轴网格的灰色框也可以绘制在你的表面之上。那更令人讨厌。
你必须使用matplotlib,然后我猜你可以将你的表面分成许多较小的表面,但你会遇到一个相当大的性能比特这样做,你将覆盖图例中的值太。