2012-09-07 37 views
10

Tôi có một tập tin .dat có chứa hai cột số để nó trông giống như sau:Làm thế nào để vẽ các tập tin với numpy?

111 112 
110.9 109 
103 103 

và vân vân.

Tôi muốn vẽ hai cột với nhau. Tôi chưa bao giờ xử lý một tệp .dat trước đó nên tôi không chắc bắt đầu từ đâu.

Cho đến bây giờ tôi đã tìm ra rằng có nhiều thứ tôi có thể sử dụng để gọi.

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

nhưng tôi không chắc chắn nên đi đâu từ đây. Bất kỳ ý tưởng?

+1

vì vậy, sau đó bạn có một mảng 2d điểm ... điều này không liên quan gì đến tệp * .dat có thể là bất kỳ thứ gì * .txt sẽ hoạt động giống hệt ... q thực của bạn uestion là "Làm thế nào để vẽ một mảng numpy?" –

+1

Thật dễ dàng trong 'gnuplot'; ^). 'plot 'yourfile.dat' u 1: 2' (nhưng tất nhiên, điều đó không giải quyết được câu hỏi thực tế ...) – mgilson

+0

Bạn có thể sử dụng Scavis giao diện NumPy (hoặc JNumeric trong Java) như [được giải thích trong sách hướng dẫn Scavis ] (http://jwork.org/scavis/wikidoc/doku.php?id=man:numeric:jnum) –

Trả lời

14

numPy không hỗ trợ Plott ing của chính nó. Bạn thường sử dụng matplotlib để vẽ các mảng có nhiều mảng.

Nếu bạn chỉ muốn "xem xét tệp", tôi nghĩ cách dễ nhất là sử dụng plotfile.

import matplotlib.pyplot as plt 

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

Bạn có thể sử dụng chức năng này gần giống như gnuplot từ bên trong ipython:

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

hoặc đặt nó trong một kịch bản shell và vượt qua các đối số cho nó để sử dụng nó trực tiếp từ vỏ của bạn

plotfile_example

+0

Cảm ơn rất nhiều. Điều này chắc chắn thực hiện công việc! –

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

[Chỉnh sửa] Thanks for the tip tôi nghĩ rằng nó là nhỏ gọn càng tốt bây giờ: P

plot 1

Nếu bạn muốn nó được log10 chỉ cần gọi log10 trên nparray)

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

log10

+1

Bạn có thể làm cho mã ngắn gọn hơn bằng cách sử dụng từ khóa 'unpack' trong' loadtxt': 'x, y = np.loadtxt ('plot_me.dat', unpack = True) ' –

+0

Cảm ơn rất nhiều! Bạn có biết làm thế nào tôi có thể lấy log_10 của các cột này? –

+0

Tôi nghĩ chỉ 'plot.plot (* np.log10 (np.loadtxt (" plot_me.dat ", unpack = True)), linewidth = 2.0)' –

Các vấn đề liên quan