在3D坐标轴上绘制2D数据的Python方法

8 投票
1 回答
10455 浏览
提问于 2025-04-18 05:37

我看了一下matplotlib的3D图示例,但是里面没有我想要的那种图,类似于下面这个:

enter image description here

这个图展示了一系列在y轴上的测量值(N),每个测量值都有一个强度谱(p/2hk_L),也就是说,图中每一条线的N值都是固定的。请问,使用哪个函数最简单可以绘制这样的数据呢?

1 个回答

11

这是一个尝试:

import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.linspace(-50,50,100)
y = np.arange(25)
X,Y = np.meshgrid(x,y)
Z = np.zeros((len(y),len(x)))

for i in range(len(y)):
    damp = (i/float(len(y)))**2
    Z[i] = 5*damp*(1 - np.sqrt(np.abs(x/50)))
    Z[i] += np.random.uniform(0,.1,len(Z[i]))
ax.plot_surface(X, Y, Z, rstride=1, cstride=1000, color='w', shade=False, lw=.5)

ax.set_zlim(0, 5)
ax.set_xlim(-51, 51)
ax.set_zlabel("Intensity")
ax.view_init(20,-120)
plt.show()

在这里输入图片描述

撰写回答