Gnuplot,用splot叠加曲线

时间:2014-02-25 14:08:17

标签: gnuplot

我正在尝试使用gnuplot在空间中绘制一系列曲线 我试图用for - 循环来做。数据分为4列,每20行,一个新的绘图开始,例如,如果我使用3和4列绘制,在第21行,第三列中的索引再次开始,并且数字在第二列增加一。这种模式重复,每隔320行,第一列的索引增加1,所有模式再次重复。
第一列中的索引从2.0到3.8,而第二列中的索引从75到90 在我的代码中,我试图为一个轴设置范围限制从1.8到4.2,为第二个轴设置范围限制从0到100。

我写了以下代码

a=0 # this variable indicates how many rows to skip
do for [j=20:38:1]{ # loop for the first column
do for [i=75:90:1]{ # loop for the second column #
splot [1.8:4.2][1:101] "dataforgnuplot" every ::a::a+19 u 1:3:4
     w lines title sprintf("%3.2f %3.2f",j/10.0, i);
a=a+20;
}
}

并且它一次生成一条曲线,但前一条曲线消失了,我查看了multiplot,并且还尝试了replot,但是,我仍然没有找到如何那样做。

1 个答案:

答案 0 :(得分:0)

你应该采用不同的方法。如果在输入文件的正确位置放置空白行,并绘制整个文件,gnuplot将确切知道何时停止绘制一条曲线并开始下一条曲线。

来自gnuplot文档:

  

单个空白记录表示图中的不连续性;没有行会连接由空白记录分隔的点(如果它们用线条样式绘制)。

     

连续两个空白记录表示不同数据集之间的中断。请参阅索引(第79页)。

两种情况之间的区别在于,作为同一数据集(一个空白行)一部分的单独曲线将以相同的颜色绘制,并在图例中使用单个条目。不同的数据集将具有不同的颜色和单独的标签。

如果您可以控制输出此数据,则应该很容易更改输出此数据的程序,以添加额外的空白行。如果您不控制它,则一行或两行脚本应该能够根据您给出的行数插入空行,或者检查第一个和第二个数据记录。