2013-03-02 116 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代表usingw代表withtc代表textcolor。一般來說,gnuplot允許你將命令縮短到可用於識別它的最短唯一字符序列。因此with可以是w,wi,wit,並且gnuplot將識別它們中的任何一個,因爲沒有其他圖說明符以w開頭。

使用說明符後面的數字是數據文件中的列。所以在這裏,標籤的x位置取自第二列。 y位置取自第3欄。標籤文本取自第一列,即我們獲取using 2:3:1的地方。它實際上比這更強大(語法允許你將2列加在一起來派生x或y位置),但解釋所有這些可能應該留給另一個問題。

+0

太棒了,謝謝!正是我需要的 – syzygy 2013-03-03 05:13:27

+0

請注意,顯然,只有在使用配置選項「--enable-datastrings'_」構建gnuplot時,_the'labels'樣式纔可用。請參閱http://superuser.com/a/67452/39752 – sdaau 2013-08-01 07:15:58

+0

另請注意 - 如果您使用帶有字符串的數據集,並且使用帶標籤的($ 1):($ 2):($ 3),則會出現「_warning:跳過數據文件中沒有有效的points_「沒有繪圖 - 嘗試'使用($ 1):($ 2):stringcolumn(3)'而不是(請注意,'stringcolumn'的參數是列號,_without_美元符號)。 – sdaau 2013-08-01 07:37:26

4

由於您使用CSV文件,你應該設置分隔符:

set datafile separator ',' 

另外,我覺得這是你想要做什麼:

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