2016-04-13 2 views
0

ich möchte meine 2d daten in 3d mit python als das foto in bild unten zu drucken. Momentan lese ich meine Daten aus Dateien, in denen ich die x- und y-Nummern auf 2 Spalten habe. Jede Hilfe wird geschätzt. Der Code, der meine Daten in 2d druckt sieht wie folgt aus:wie 2d daten in 3d zu drucken, daten lesen von datei mit python

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

Antwort

0

Das Grundstück in Ihrem Bild sieht aus wie in mplot3d gemacht. Es ist ein Beispiel, wie es in der tutorial zu tun:

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

Einstellung rstride oder cstride-0 finden Sie das Grundstück erhalten typy Sie wollen.

Jetzt sollten Sie nur die richtigen Eingabevariablen X, Y, Z erstellen. Ich nehme an, dass alle Ihre datai die gleiche Länge haben, sagen N, und alle x Spalten datai[:0]sind identisch. (Wenn nicht, dann mehr Arbeit erforderlich ist.) Dann

X, Y = np.meshgrid(range(1,6), data1[:,0])  
# or maybe the other way: 
# X, Y = np.meshgrid(data1[:,0], range(1,6)) 

und Z besteht aus allen y Spalten aus Daten verkettet in eine Anordnung von der gleichen Form wie X and Y (alle von ihnen sollte N x 5 Arrays oder 5 x N-Arrays).