2016-03-23 14 views
2

Ben çizmek istiyorum 3 sütun ile bir .dat dosyası var. Matplotlib/python kullanarak bunları nasıl çizebilirim? Python için yeni, .dat dosyası Fortran 90. filename.dat dosyasının bir bölümü kullanılarak oluşturuldu 3D verileri (doğru değil).dat dosyasından 3 sütun çizme

0.0 0.1 0.85 
1.0 0.3 0.62 
2.0 0.5 0.27 
3.0 0.7 0.34 
4.0 0.9 0.19 

Benim piton kod aşağıda aşağıda olmasıdır.

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

3Dplot.plot(*np.loadtxt("filename.dat",unpack=True), linewidth=2.0) #invalid syntax, why? 
3Dplot.show() 

gnuplot'a komuta Python

splot 'filename.dat' using 1:2:3 

eşdeğer nedir? Yapmaya çalıştığım şey budur.

Ancak, .py'yi çalıştırdığımda neden "geçersiz sözdizimi" hata iletisini alıyorum, neden emin değilim, ancak 3B ile başlayan satır. 3d veriyi nasıl çizebilirim? Ben sadece iki sütun ile bir .dat dosyası varsa bunu yapabilirim, ancak 3 boyuta gittiğimde ne yapacağımı bilmiyorum. Teşekkürler!

+0

hata nedir? – efirvida

+0

@efirvida sorgunuzdan beri eklediniz, hata "geçersiz sözdizimi" dir. Teşekkürler. –

+2

@Integrals: SyntaxError nedenidir çünkü tanımlayıcılar ('3Dplot' gibi) [bir basamakla başlayamaz] (https://docs.python.org/2/reference/lexical_analysis.html#identifiers). – unutbu

cevap

4

Axes3D nesnesini yanlış kullanıyorsunuz, bu yüzden bir SyntaxError numaralı telefonu görüyorsunuz.

bu deneyin:

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

fig = plt.figure() 
ax = Axes3D(fig) 

# Unpack file data. 
dat_file = np.loadtxt("filename.dat", unpack=True) 

# Plot data. 
ax.scatter(*dat_file, linewidth=2.0) 
plt.show() 

enter image description here

+1

Bu gerçekten iyi çalışıyor! Geçersiz sözdizimi hatasının neden geldiğine dikkat çekmek için çok teşekkürler. –

+0

Bu koda başka bir .dat dosyası eklemenin kolay bir yolu var mı? Yani aynı şekildeki iki .dat dosyasını çizebilirim? Her .dat dosyasının 3 sütunu vardır, bu yüzden aynı şekilde 2 parsel koymayı kastettim. Birçok şeyi denedim ama anlayamıyorum. GNU çiziminde, sadece 'filename1.dat', 'filename2.dat' splotidir. Bu yüzden burada böyle birçok şey denedim ama anlayamadım. Teşekkürler! Önerirsen bunu başka bir soru olarak memnuniyetle gönderirim. Sizi rahatsız ettiğim için özür dilerim. –

+1

Sadece yeni .dat dosyasını başka bir 'dat_file2 = np.loadtxt()' satırı ile okuyun ve yeni bir 'ax.scatter (* dat_file2)' satırı ile çizin. – Gabriel

İlgili konular