我想用 matplotlib 绘制一个 3d 图。
数据如下:我有一个矩阵,每行包含 3d 绘图的 Y 坐标。每行第一个元素是 3d 绘图的 X 坐标。最后,第二个矩阵在 X,Y 位置包含每个点的高电平。因此,第二个矩阵包含我的 Z 坐标。两个矩阵都是 Python 的数组。我想知道如何转换数据以获得:
- 每个 1d 信号对应于 X 的图,像这样(在线提供照片)
- 相同数据的线框图,像这样
我为线框工作编写了一个辅助函数,
######## HELPER FOR PLOT 3-D
def plot_3d(name,X,Y,Z):
fig = plt.figure(name)
ax = fig.gca(projection='3d')
X = np.array(X)
Y = np.array(Y)
Z = np.array(Z)
ax.plot_wireframe(X,Y,Z,rstride=10,cstride=10)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
plt.show()
但我不知道如何转换数据 X、Y、Z 以使其符合 matplotlib 函数的要求,该函数需要 X、Y、Z 的 2D 列表。
对于第一张图,我阅读了帮助,并想在 3d 中使用 2d 绘图。示例源代码给出:
x = np.linspace(0, 1, 100)
y = np.sin(x * 2 * np.pi) / 2 + 0.5
ax.plot(x, y, zs=0, zdir='z', label='zs=0, zdir=z')
其中 z 是常数坐标。在我的例子中,x 是常数坐标。我适应
fig = plt.figure('2d profiles')
ax = fig.gca(projection='3d')
for i in range(10):
x = pt ## this is a scalar
y = np.array(y)
z = np.array(z)
ax.plot(xs = x, y, z, xdir='x')
plt.show()
但有警告:non-keyword arg after keyword arg
。怎么修?
谢谢并恭祝安康