Python绘制2D数据到3D坐标轴上

7
我已经查看了matplotlib的3D绘图示例,但是没有一个能够满足我想要绘制的图形,类似于:

enter image description here

图表显示了一系列在y轴上的测量值(N),每个测量都有一个强度谱(p/2hk_L),即每条线在图表中对应一个固定的N值。什么是最容易用于绘制这种数据的函数?

实际上,Axes3D.add_collection3d(http://matplotlib.org/1.3.1/mpl_toolkits/mplot3d/tutorial.html#polygon-plots)看起来还不错... - Medulla Oblongata
matplotlib缩略图库中的任何示例对您有用吗?以下是如何制作线框图的方法(http://matplotlib.org/xkcd/examples/mplot3d/wire3d_demo.html),虽然不完全相同但也不错。 - Thom Chubb
1个回答

11
这里试试:

Here is a try:

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

图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接