在matplotlib中有类似深度缓冲的东西吗?

时间:2012-08-30 09:22:49

标签: python numpy plot matplotlib

我正在尝试使用matplotlib绘制一些曲线 但是,由于这些曲线从视口彼此重叠 所以只有z顺序在这里无法帮助。

我想知道matplotlib中是否有一个函数像深度缓冲区一样工作 我正在密谋这样的事情。
并且红线不应该始终位于3D空间的顶部。

2 个答案:

答案 0 :(得分:15)

我认为在matplotlib中做这些事很难,因为它是一个具有3D绘图能力的2D绘图库。我推荐一些真正的3D绘图库,比如visvis,mayavi,vpython。例如,在visvis中,您可以创建如下的3D曲线:

enter image description here

import numpy as np
import visvis as vv
app = vv.use()

f = vv.clf()
a = vv.cla()

angle = np.linspace(0, 6*np.pi, 1000)
x = np.sin(angle)
y = np.cos(angle)
z = angle / 6.0
vv.plot(x, y, z, lw=10)

angle += np.pi*2/3.0
x = np.sin(angle)
y = np.cos(angle)
z = angle / 6.0 - 0.5
vv.plot(x, y, z, lc ="r", lw=10)

app.Run()

Mayavi的:

enter image description here

import numpy as np
from mayavi import mlab

angle = np.linspace(0, 6*np.pi, 1000)
x = np.sin(angle)
y = np.cos(angle)
z = angle / 6.0

mlab.plot3d(x, y, z, color=(1,0,0), tube_radius=0.1)

angle += np.pi*2/3.0
x = np.sin(angle)
y = np.cos(angle)
z = angle / 6.0 - 0.5
mlab.plot3d(x, y, z, color=(0,0,1), tube_radius=0.1)

mlab.axes()
mlab.show()

答案 1 :(得分:1)

您可以尝试使用fill_between函数手动为区域着色。看到 随机步行者的例子:

http://matplotlib.sourceforge.net/users/recipes.html

http://matplotlib.sourceforge.net/users/recipes-6.py