我想用python将我的2d数据打印成3d,如下图所示。目前我正在从我在2列上有x和y数字的文件中读取数据。任何帮助都会被贬低。在2d中打印我的数据的代码如下所示:
import numpy as np
import pylab as pl
import matplotlib as mpl
data1 = np.loadtxt('NL_extb_1.xye')
data2 = np.loadtxt('NL_extb_2.xye')
data3 = np.loadtxt('NL_extb_3.xye')
data4 = np.loadtxt('NL_extb_4.xye')
data5 = np.loadtxt('NL_extb_5.xye')
pl.plot(data1[:,0], data1[:,1] , 'black')
pl.plot(data2[:,0], data2[:,1], 'black')
pl.plot(data3[:,0], data3[:,1] ,'black')
pl.plot(data4[:,0], data4[:,1] ,'black')
pl.plot(data5[:,0], data5[:,1] ,'black')
pl.xlabel("2Theta")
pl.ylabel("Counts")
pl.show()
答案 0 :(得分:0)
图片中的情节看起来像mplot3d
。有一个例子,如何在tutorial:
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X, Y, Z = axes3d.get_test_data(0.05) #<-- REPLACE THIS LINE WITH YOUR DATA
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
plt.show()
将rstride
或cstride
设置为0可以获得您想要的情节。
所以现在,你唯一应该做的就是创建正确的输入变量X, Y, Z
。我假设您的所有datai
具有相同的长度,例如N,并且所有x
列datai[:0]
都相同。 (如果没有,则需要做更多工作。)
然后
X, Y = np.meshgrid(range(1,6), data1[:,0])
# or maybe the other way:
# X, Y = np.meshgrid(data1[:,0], range(1,6))
和Z
由数据中的所有y
列组成,这些列连接成与X and Y
形状相同的数组(所有这些列都应为N x 5数组或5 x N数组)。