2013-04-18 38 views
24

Tôi có tệp chứa 4 số (tối thiểu, tối đa, trung bình, tiêu chuẩn) và tôi muốn vẽ nó bằng gnuplot.gnuplot: vẽ một tệp có 4 cột trên trục y

mẫu:

24 31 29.0909 2.57451 
12 31 27.2727 5.24129 
14 31 26.1818 5.04197 
22 31 27.7273 3.13603 
22 31 28.1818 2.88627 

Nếu tôi có 4 file với một cột, sau đó tôi có thể làm:

gnuplot "file1.txt" with lines, "file2.txt" with lines, "file3.txt" with lines, "file4.txt" with lines 

Và nó sẽ âm mưu 4 đường cong. Tôi không quan tâm đến trục x, nó chỉ nên là một sự gia tăng liên tục.

Làm cách nào tôi có thể phác thảo? Tôi dường như không thể tìm cách để có 4 đường cong với 1 tập tin với 4 cột, chỉ cần có một giá trị x gia tăng liên tục.

Cảm ơn bạn.

+0

Một cách tôi nghĩ làm, là để đưa một số gia tăng trên bên trái, và sau đó sử dụng bằng 1: 2, sử dụng 1: 3 .... nhưng có lẽ có một cách mà không có cột phụ xin vui lòng? – user1777907

Trả lời

63

Bạn có thể vẽ các cột khác nhau của cùng một tập tin như thế này:

plot 'file' using 0:1 with lines, '' using 0:2 with lines ... 

(... nghĩa tiếp tục). Một vài lưu ý về ký hiệu này: using chỉ định cột nào cần vẽ là cột 0 và 1 trong câu lệnh using đầu tiên, cột thứ 0 là cột giả chuyển thành số dòng hiện tại trong tệp dữ liệu. Lưu ý rằng nếu chỉ một đối số được sử dụng với using (ví dụ: using n), nó tương ứng với câu hỏi using 0:n (cảm ơn vì đã chỉ ra rằng mgilson).

Nếu phiên bản Gnuplot của bạn là đủ gần đây, bạn sẽ có thể vẽ tất cả 4 cột với một cho vòng lặp:

set key outside 
plot for [col=1:4] 'file' using 0:col with lines 

Kết quả:

for-loop plot

Gnuplot có thể sử dụng tiêu đề cột cho tiêu đề nếu chúng nằm trong tệp dữ liệu, ví dụ:

min max mean std 
24 31 29.0909 2.57451 
12 31 27.2727 5.24129 
14 31 26.1818 5.04197 
22 31 27.7273 3.13603 
22 31 28.1818 2.88627 

set key outside 
plot for [col=1:4] 'file' using 0:col with lines title columnheader 

Kết quả trong:

for-loop plot with column headers

+5

Tôi tin rằng '0' là không cần thiết thực sự ...' cốt truyện cho [col = 1: 4] 'foo' sử dụng col' - Đây chỉ là một FYI. Tôi thực sự thích kịch bản với nó trong đó. – mgilson

+0

@mgilson: Tốt, tôi sẽ thêm nó dưới dạng sidenote. – Thor

+0

Cảm ơn bạn rất nhiều! Điều này là hoàn hảo, rất sâu sắc. Giúp tôi rất nhiều! – user1777907

11

Chỉ cần thêm rằng bạn có thể xác định thặng dư trong vòng lặp for như là đối số thứ ba. Nó rất hữu ích nếu bạn muốn vẽ từng cột thứ n.

plot for [col=START:END:INC] 'file' using col with lines 

Trong trường hợp này nó thay đổi gì nhưng dù sao:

plot for [col=1:4:1] 'file' using col with lines 
Các vấn đề liên quan