2011-12-27 32 views
13

Tôi có tệp dữ liệu chứa 30 cột và N hàng. Mỗi hàng tương ứng với 30 giá trị của hàm f (x) cho x = {1, ..., 30}. Tệp dữ liệu có mẫu sau:gnuplot: Cách vẽ từng dòng của tệp dữ liệu dưới dạng Y và gia tăng X

#<index> f(1) f(2) ... f(30) 
1 7.221 5.302 ... -1.031 
2 4.527 3.193 ... 0.410 
... 
N 6.386 1.321 ... -0.386 

gnuplot diễn giải cột đầu tiên là cột X và cột thứ hai là Y. Nhưng đó không phải là điều tôi muốn. Ví dụ: đối với dòng đầu tiên, gnuplot nhận được kết quả mong muốn với tệp đầu vào này:

# X Y 
1 7.221 
2 5.302 
... 
30 -1.031 

Tôi muốn vẽ từng dòng trong tệp đầu ra được tách riêng mà không chuyển tệp dữ liệu này.

Cảm ơn

Trả lời

7

CẬP NHẬT dựa trên @ bình luận Christoph của:

plot for [i=2:30] 'data.dat' using (i-1):(column(i)) with linespoint 
+0

Cảm ơn câu trả lời nhưng đó không phải là điều tôi đang tìm kiếm. Đầu ra của điều này sẽ là những điểm này (1, y1), (1, y2), ... (1, y30) cho dòng đầu tiên của 'data.dat'. Câu trả lời mong muốn là (1, y1), (2, y2), ..., (30, y30). – cartoonist

+2

Điều đó sẽ làm việc với 'sử dụng (i-1): (cột (i))'. – Christoph

+0

Nó không hoạt động đúng cách. Nó không xếp hàng theo hàng, nhưng cột theo cột. Câu trả lời dưới đây là chính xác. –

7

Tôi tìm thấy một giải pháp:

plot "data.dat" matrix every 1::1 with linespoint 
  • matix chỉ ra loại tập tin dữ liệu mà tập tin đầu vào giải thích như ma trận.
  • every 1::1 bỏ qua cột đầu tiên
+0

Có cách nào để tô màu cho mỗi dòng khác nhau? –

+1

@JakubPietkun Có, [có] (http://stackoverflow.com/a/20983399). Có vẻ như, ma trận 'plot" data.dat "sử dụng 1: 3: 2 mỗi 1 :: 1 với bảng điểm dòng' sẽ thực hiện thủ thuật. –

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