2012-11-24 35 views
20

Tôi có tệp CSV tại e:\dir1\datafile.csv. Nó chứa ba cột và 10 dòng tiêu đề và dòng cuối cần phải bỏ qua. Tôi muốn vẽ nó với numpy.loadtxt(), mà tôi chưa tìm thấy bất kỳ tài liệu nghiêm ngặt nào.dữ liệu lô từ tệp CSV với matplotlib

Đây là những gì tôi bắt đầu viết từ một số lần thử mà tôi tìm thấy trên web.

import matplotlib as mpl 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.cbook as cbook 

def read_datafile(file_name): 
    # the skiprows keyword is for heading, but I don't know if trailing lines 
    # can be specified 
    data = np.loadtxt(file_name, delimiter=',', skiprows=10) 
    return data 

data = read_datafile('e:\dir1\datafile.csv') 

x = ??? 
y = ??? 

fig = plt.figure() 

ax1 = fig.add_subplot(111) 

ax1.set_title("Mains power stability")  
ax1.set_xlabel('time') 
ax1.set_ylabel('Mains voltage') 

ax1.plot(x,y, c='r', label='the data') 

leg = ax1.legend() 

plt.show() 
+0

http://stackoverflow.com/questions/11248812/matplotlib-basic-plotting-from-text-file –

Trả lời

34

Theo docsnumpy.loadtxt

đọc nhanh cho chỉ đơn giản là định dạng tập tin. Hàm genfromtxt cung cấp xử lý phức tạp hơn, ví dụ: các dòng có giá trị bị thiếu.

vì vậy chỉ có một vài tùy chọn để xử lý các tệp phức tạp hơn. Như đã đề cập, numpy.genfromtxt có nhiều tùy chọn hơn. Vì vậy, như một ví dụ bạn có thể sử dụng

import numpy as np 
data = np.genfromtxt('e:\dir1\datafile.csv', delimiter=',', skip_header=10, 
        skip_footer=10, names=['x', 'y', 'z']) 

để đọc dữ liệu và gán tên cho các cột (hoặc đọc một dòng tiêu đề từ các tập tin với names=True) và hơn vẽ nó với

ax1.plot(data['x'], data['y'], color='r', label='the data') 

Tôi nghĩ numpy là khá tốt tài liệu ngay bây giờ. Bạn có thể dễ dàng kiểm tra các tài liệu từ bên trong ipython hoặc bằng cách sử dụng một IDE như spider nếu bạn muốn đọc chúng dưới dạng HTML.

+1

Cảm ơn thông tin của bạn. Tôi tải về ref refump. thủ công; nó có tất cả thông tin tôi cần về genfromtxt. – user1850133

+0

rất vui khi nghe. Trên Stackoverflow bạn thường sẽ upvote một câu trả lời, nếu nó là hữu ích cho bạn (và có thể để lại một bình luận) và/hoặc chấp nhận nó nếu câu hỏi của bạn được trả lời. – bmu

4

Tôi đoán

x= data[:,0] 
y= data[:,1] 
+1

Hoặc, luân phiên, 'x, y = dữ liệu [:,: 2] .T' (hoặc thậm chí 'x, y, third_column = data.T' nếu' dữ liệu' sẽ luôn có 3 cột). –

+0

Cú pháp không hợp lệ –

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