如何将2d数据打印成3d,用python从文件中读取数据

时间:2016-04-13 13:52:09

标签: python

我想用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()

enter image description here

1 个答案:

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

rstridecstride设置为0可以获得您想要的情节。

所以现在,你唯一应该做的就是创建正确的输入变量X, Y, Z。我假设您的所有datai具有相同的长度,例如N,并且所有xdatai[: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数组)。