gnuplot根据第一列绘制多个误差线

时间:2019-06-01 17:00:57

标签: gnuplot

我有一个具有以下格式的数据文件: col1:剧情[0-9] + col2:x col3:是 col4:三角洲

例如:

plot0, 1, 1, 2
plot1, 1, 2, 2
plot0, 2, 2, 1
plot1, 2, 3, 2

我正在尝试为图例和颜色分开的第一列的每个plotX绘制yerrorbars。

一个不可扩展的示例是:

plot 'ex.dat' using 1:2:3 with yerrorbars, 'ex1.dat' using 1:2:3 with yerrorbars

1 个答案:

答案 0 :(得分:1)

也许是这样? datapoint + yerrorbar的颜色通过功能GetPlotNo(n) = int(strcol(n)[5:])从第一列中获取。 第二个plot命令实际上是在范围之外绘制一个虚拟对象,只是为了获得正确的图例颜色。如果您需要连接每个plot1,plot2,...的数据点,则可能会更加复杂。

代码:

### color of datapoints depending on a column
reset session
set colorsequence classic 

$Data <<EOD
plot0, 1.0, 1, 2
plot1, 1.1, 2, 2
plot0, 2.0, 2, 1
plot1, 2.1, 3, 2
plot2, 1.2, 3, 2
plot0, 3.0, 3, 1
plot1, 3.1, 4, 1
plot2, 2.2, 5, 1
plot2, 3.2, 4, 1
EOD

set datafile separator ","
set xrange[0:4]
set yrange[-1:7]

GetPlotNo(n) = int(strcol(n)[5:])

plot \
    $Data u 2:3:4:(GetPlotNo(1)+1) w yerrorbars pt 7 lc var lw 2 notitle, \
    for [i=0:2] -999 w lp pt 7 lc i+1 lw 2 title sprintf("plot%i",i) noautoscale
### end of code

结果:

enter image description here