12

我是 gnuplot 的新手,无法找到某些命令的含义。我想绘制一个 csv 文件,其中行是数据点,三列分别代表数据标签、x 值和 y 值。我希望 x 轴上的第二列和 y 轴上的第三列以及第一列是附加到该点的标签。这是数据

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

但它报告“这种样式的列不足”。我真的不知道冒号周围的数字是什么意思,尽管我在其他人的代码中到处都能看到它们。

4

2 回答 2

16

您可以使用以下命令执行此操作:

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,wiwitgnuplot 将识别其中任何一个,因为没有其他绘图说明符以 . 开头w

using 说明符后的数字是数据文件中的列。所以在这里,标签的 x 位置取自第 2 列。y 位置取自第 3 列。标签文本取自第一列,这是我们获得using 2:3:1. 它实际上比这更强大(例如,语法将允许您将 2 列添加在一起以得出 x 或 y 位置),但解释所有这些可能应该留给另一个问题。

于 2013-03-02T14:47:48.597 回答
4

由于您使用的是 csv 文件,因此您应该设置分隔符:

set datafile separator ','

另外,我认为这就是你想要做的:

plot 'infile' using 2:3, 'infile' 2:3:1 with labels offset 1
于 2013-03-02T09:52:05.900 回答