2013-03-02 2 views
9

Я новичок в gnuplot, и мне трудно найти смысл некоторых команд. Я хочу построить файл csv, где строки - это точки данных, а три столбца представляют собой метку данных, значение x и значение y соответственно. Мне нужен второй столбец по оси x, а третий столбец по оси y и первый столбец - метка, прикрепленная к этой точке. Вот данныеgnuplot plot помечены данными

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 

я пытался что-то вроде

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

но сообщает «Недостаточно столбцов для этого типа». Я не знаю, что означают цифры вокруг двоеточий, хотя я вижу их везде в коде других.

ответ

15

Вы можете сделать это с выполните следующие действия:

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

Часть вашего замешательства, вероятно, краткое обозначение gnuplot для многих вещей. Например, в приведенной выше команде u означает using и w обозначает with и tc обозначает textcolor. В общем случае gnuplot позволяет сократить команду до кратчайшей уникальной последовательности символов, которая может быть использована для ее идентификации. так что with может быть w, wi, wit и gnuplot распознает любой из них, так как никакие другие параметры печати не начинаются с w.

Номера после использования спецификатора являются столбцами в вашем файле данных. Итак, здесь позиция x метки взята из второго столбца. Позиция y взята из 3-го столбца. И текст ярлыка берется из 1-го столбца, где мы получаем using 2:3:1. Это на самом деле намного более мощное, чем это (синтаксис позволит вам добавить 2 столбца вместе, чтобы получить, например, позицию x или y), но объяснение всего этого, вероятно, должно быть оставлено для другого вопроса.

+0

Awesome, спасибо! Точно, что мне нужно – syzygy

+0

Обратите внимание, что, по-видимому, «стиль' меток »доступен, только если gnuplot построен с параметром конфигурации« --enable-datastrings'_ »; см. http://superuser.com/a/67452/39752 – sdaau

+0

Также обратите внимание - если вы используете набор данных со строками и 'using ($ 1): ($ 2): ($ 3) с метками' fail with "_warning: Пропуск данных файл без действительных точек_ »без построения графика - попробуйте использовать ($ 1): ($ 2): stringcolumn (3)' вместо (обратите внимание, что аргумент 'stringcolumn' - это номер столбца, _without_ долларовый сигил). – sdaau

4

Поскольку вы используете файл CSV вы должны установить разделитель:

set datafile separator ',' 

Кроме того, я думаю, что это то, что вы пытаетесь сделать:

plot 'infile' using 2:3, 'infile' 2:3:1 with labels offset 1 
Смежные вопросы