如何使用Gnuplot中一个文件的标题绘制几个数据集?

gTc*_*TcV 29 gnuplot

假设我有一个如下所示的文件:

"p = 0.1"
1 1
3 3
4 1


"p = 0.2"
1 3
2 2
5 2
Run Code Online (Sandbox Code Playgroud)

是否有可能使Gnuplot在一个图中绘制这两个数据集,并在每个数据集的第一行给出标题?

mgi*_*son 36

这绝对是可能的,您的数据文件已经是正确的格式.您正在寻找的功能是内置的columnheader(N),它读取第N列顶部的数据并将其用作绘图标题:

 plot 'test.dat' i 0 u 1:2 w lines title columnheader(1),\
      'test.dat' i 1 u 1:2 w lines title columnheader(1)
Run Code Online (Sandbox Code Playgroud)

可以使用迭代压缩:

plot for [IDX=0:1] 'test.dat' i IDX u 1:2 w lines title columnheader(1)
Run Code Online (Sandbox Code Playgroud)


mkj*_*sen 6

这是Bruce_WarriorCiro Santilli的答案,但没有中间人stats:

# plot.gpi
datafile = ARG1
plot for [i=0:*] datafile index i using 1:2\
with lines title columnheader(1)
Run Code Online (Sandbox Code Playgroud)

for回路可以在文件中直接遍历所有数据集.它适用于gnuplot 5.0.5,但我不确定何时for获得此功能.它记录在5.0手册中,但没有记录在4.6手册中.

除非线颜色应由消耗的第三个输入列确定linecolor variable(根据Bruce的答案),gnuplot将自动分配不同的颜色和线条样式.在这种特定情况下using 1:2也可以省略.

$ gnuplot --version
gnuplot 5.0 patchlevel 5
$ gnuplot --persist -c plot.gpi test.dat
Run Code Online (Sandbox Code Playgroud)

Plot de

test.dat

"p = 0.1"
1 1
3 3
4 1


"p = 0.2"
1 3
2 2
5 2
Run Code Online (Sandbox Code Playgroud)