Matplotlib - 多个表面图,错误重叠

时间:2013-07-14 11:59:55

标签: python 3d matplotlib plot

我目前正在将两个完全不同的数据集绘制成一个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)

输出如下:

output

正如您所看到的,蓝色数据是正确的,但绿色数据在某种程度上位于背面并且未正确显示。如果我单独绘制绿色的那个,那就完美了。

更改绘图的顺序(或使用zorder进行游戏)不会改变任何内容。

希望有人可以提供帮助!

1 个答案:

答案 0 :(得分:0)

Matplotlib只是一个2D绘图库。通过将3d表面投影到图像平面上来实现3d图。

如果你有多个3d表面,它会将每个表面变为2d形状,然后计算每个形状的单个高度,然后按顺序显示。

据我所知,zorder选项不起作用,并且无论如何都会改变曲面的顺序。

如果你真的不走运,构成轴网格的灰色框也可以绘制在你的表面之上。那更令人讨厌。

你必须使用matplotlib,然后我猜你可以将你的表面分成许多较小的表面,但你会遇到一个相当大的性能比特这样做,你将覆盖图例中的值太。