2013-03-02 29 views
9

Tôi mới sử dụng gnuplot và gặp khó khăn khi tìm ý nghĩa của một số lệnh. Tôi muốn vẽ một tệp csv trong đó các hàng là các điểm dữ liệu và ba cột đại diện cho nhãn dữ liệu, giá trị x và giá trị y tương ứng. Tôi muốn cột thứ hai trên trục x và cột thứ ba trên trục y và cột đầu tiên là nhãn gắn liền với điểm đó. Đây là dữ liệuDữ liệu có nhãn lô gnuplot

ACB, 0.0000000, 0.0000000000 
ASW, 1.0919705, -0.0864042502 
CDX, 0.0000000, 0.0000000000 
CEU, -0.4369415, -0.5184317277 
CHB, -0.4686879, 0.7764323199 
CHD, 0.0000000, 0.0000000000 
CHS, -0.4141749, 0.7482543582 
CLM, -0.2559306, -0.2535837629 
FIN, -0.5004242, -0.2108050200 
GBR, -0.4140216, -0.5132990203 
GIH, 0.0000000, 0.0000000000 
IBS, -0.4928541, -0.5812216372 
JPT, -0.4821734, 0.7263450301 
KHV, 0.0000000, 0.0000000000 
LWK, 1.4515552, -0.0003996165 
MKK, 0.0000000, 0.0000000000 
MXL, -0.4019733, -0.0484315198 
PEL, 0.0000000, 0.0000000000 
PUR, -0.2165559, -0.3173440295 
TSI, -0.3956957, -0.4549254002 
YRI, 1.5555644, -0.0202297606 

Tôi đã thử những thứ như

plot 'infile' using 2:2 with labels, 'infile' using 1:2 

nhưng nó báo cáo "Không đủ các cột cho phong cách này". Tôi không thực sự biết những con số xung quanh dấu hai chấm có ý nghĩa gì, mặc dù tôi thấy chúng ở khắp mọi nơi trong mã của người khác.

Trả lời

15

Bạn có thể làm điều này với lệnh sau:

set datafile sep ',' 
plot 'test.dat' u 2:3:1 w labels point offset character 0,character 1 tc rgb "blue" 

Một phần nhầm lẫn của bạn có thể là ký hiệu viết tắt của gnuplot cho nhiều thứ. Ví dụ: trong lệnh bên trên, u là viết tắt của usingw là viết tắt của withtc là viết tắt của textcolor. Nói chung, gnuplot cho phép bạn rút ngắn lệnh thành chuỗi ký tự duy nhất ngắn nhất có thể được sử dụng để nhận dạng nó. do đó with có thể là w, wi, wit và gnuplot sẽ nhận ra bất kỳ thiết bị nào vì không có thông số cốt truyện nào khác bắt đầu bằng w.

Các số sau khi sử dụng trình chỉ định là các cột trong tệp dữ liệu của bạn. Ở đây, vị trí x của nhãn được lấy từ cột thứ 2. Vị trí y được lấy từ cột thứ 3. Và văn bản nhãn được lấy từ cột đầu tiên là nơi chúng tôi nhận được using 2:3:1. Nó thực sự mạnh hơn rất nhiều (cú pháp sẽ cho phép bạn thêm 2 cột với nhau để lấy được vị trí x hoặc y), nhưng giải thích tất cả điều đó có lẽ nên để lại cho một câu hỏi khác.

+0

Tuyệt vời, cảm ơn! Chính xác những gì tôi cần – syzygy

+0

Lưu ý rằng, rõ ràng, kiểu "_the' labels' chỉ khả dụng nếu gnuplot được xây dựng với tùy chọn cấu hình '--enable-datastrings'_"; Xem thêm http://superuser.com/a/67452/39752 – sdaau

+0

Cũng lưu ý - nếu bạn sử dụng tập dữ liệu có chuỗi và 'sử dụng ($ 1): ($ 2): ($ 3) với nhãn' không thành công với" _warning: Bỏ qua dữ liệu tập tin không có điểm hợp lệ_ "không có âm mưu - hãy thử' sử dụng ($ 1): ($ 2): stringcolumn (3) 'thay thế (chú ý, đối số của' stringcolumn' là số cột, _without_ a sigil dollar). – sdaau

4

Vì bạn đang sử dụng một tập tin csv bạn nên đặt tách:

set datafile separator ',' 

Ngoài ra, tôi nghĩ rằng đây là những gì bạn đang cố gắng để làm:

plot 'infile' using 2:3, 'infile' 2:3:1 with labels offset 1 
Các vấn đề liên quan