2012-09-07 29 views
10

我有一個包含數字的兩列,所以它看起來是這樣的.dat文件:如何用numpy繪製文件?

111 112 
110.9 109 
103 103 

等。

我想繪製兩列對彼此。我從來沒有處理過一個.dat文件,所以我不知道從哪裏開始。

到目前爲止,我發現numpy可以用來打電話。

data = numpy.loadtxt('data.DAT') 

但我不知道該從哪裏出發。有任何想法嗎?

+1

所以你有一個二維數組的點...這與* .dat文件無關* .txt將工作完全一樣......你真正的q uestion是「我如何繪製一個numpy數組?」 –

+1

'gnuplot'; ^)很簡單。 'plot'yourfile.dat'u 1:2'(但當然,這並不能解決實際問題......) – mgilson

+0

您可以使用Scavis來接口NumPy(或Java中的JNumeric)[參見Scavis手冊](http://jwork.org/scavis/wikidoc/doku.php?id=man:numeric:jnum) – 2014-01-29 03:36:03

回答

14

Numpy不支持plott本身。您通常會使用matplotlib繪製numpy數組。

如果您只是想「查看文件」,我認爲最簡單的方法是使用plotfile

import matplotlib.pyplot as plt 

plt.plotfile('data.dat', delimiter=' ', cols=(0, 1), 
      names=('col1', 'col2'), marker='o') 
plt.show() 

可以IPython的範圍內使用該功能幾乎像gnuplot來自:

$ ipython --pylab 
... 
... 
In [1]: plt.plotfile('data.dat', delimiter=' ', cols=(0, 1), 
...     names=('col1', 'col2'), marker='o') 

或把它放在一個shell腳本,並傳遞參數給它直接從你的shell使用它

plotfile_example

+0

非常感謝。這絕對是工作! –

4
import numpy as np 
import matplotlib.pyplot as plot 
#data = np.loadtxt("plot_me.dat") 
#x,y=np.loadtxt("plot_me.dat",unpack=True) #thanks warren! 
#x,y = zip(*data) 
#plot.plot(x, y, linewidth=2.0) 
plot.plot(*np.loadtxt("plot_me.dat",unpack=True), linewidth=2.0) 
plot.show() 

[編輯]謝謝你的提示,我認爲它儘可能緊湊現在:P

plot 1

如果你希望它是日誌10只調用日誌10對nparray)

plot.plot(*np.log10(np.loadtxt("plot_me.dat",unpack=True)), linewidth=2.0) 

log10

+1

你可以使用'loadtxt'中的'unpack'關鍵字來使代碼更加簡潔:'x,y = np.loadtxt('plot_me.dat',unpack = True)' –

+0

非常感謝!你知道我可以如何取得這些列的log_10嗎? –

+0

我想'plot.plot(* np.log10(np.loadtxt(「plot_me.dat」,unpack = True)),linewidth = 2.0)' –