2016-03-23 79 views
2

我有一個帶有3列的.dat文件,我想繪製它。 如何使用matplotlib/python來繪製它們?我是新來的蟒蛇時,.dat文件使用的Fortran 90的filename.dat文件的一部分創建低於從.dat文件繪製3列

繪出三維數據
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 

我的Python代碼(不正確)如下。

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命令

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

在Python?這正是我想要做的。

但是,當我運行.py時,出現「無效語法」錯誤消息,我不知道爲什麼,但它是以3D開頭的行。我如何繪製3D數據?如果我有一個只有兩列的.dat文件,我能夠做到這一點,但是當我進入三維時,我不知道該怎麼做。謝謝!

+0

有什麼錯誤? – efirvida

+0

@efirvida自從您提問之後將其添加到帖子中,錯誤是「無效語法」。謝謝。 –

+2

@Integrals:SyntaxError的原因是因爲標識符(如'3Dplot')[不能以數字開頭](https://docs.python.org/2/reference/lexical_analysis.html#identifiers)。 – unutbu

回答

4

您錯誤地使用了Axes3D對象,這就是爲什麼您會看到SyntaxError

試試這個:

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

這真的很好!非常感謝您指出爲什麼無效語法錯誤也會出現。 –

+0

有沒有簡單的方法來添加另一個.dat文件到這個代碼?所以我可以在同一張圖上繪製兩個.dat文件?每個.dat文件有3列,所以我只是想把2個圖放在同一個圖上。我嘗試了很多東西,但無法弄清楚。在GNU情節中,它只是 splot'filename1.dat','filename2.dat'。 所以我在這裏嘗試了很多事情,但無法弄清楚。謝謝!如果您提出建議,我會很樂意將此作爲另一個問題發佈。抱歉打擾你。 –

+1

只需使用另一個'dat_file2 = np.loadtxt()'行讀取新的.dat文件,然後使用新的'ax.scatter(* dat_file2)'行進行繪圖。 – Gabriel