11

我正在尝试用 matplotlib 绘制一些曲线。
但是,由于这些曲线从视口相互重叠。
所以这里只有 z-order 无能为力。

我想知道是否有一个函数像 matplotlib 中的深度缓冲区一样工作。
我正在策划这样的事情。
而且红线不应该总是在 3D 空间的顶部。

4

2 回答 2

17

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

在此处输入图像描述

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()

玛维:

在此处输入图像描述

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()
于 2012-09-03T05:11:47.860 回答
1

您可以尝试使用该fill_between功能手动为区域着色。请参阅随机步行者示例:

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

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

于 2012-08-30T13:39:16.447 回答