我正在尝试使用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
,但是,我仍然没有找到如何那样做。
答案 0 :(得分:0)
你应该采用不同的方法。如果在输入文件的正确位置放置空白行,并绘制整个文件,gnuplot将确切知道何时停止绘制一条曲线并开始下一条曲线。
来自gnuplot
文档:
单个空白记录表示图中的不连续性;没有行会连接由空白记录分隔的点(如果它们用线条样式绘制)。
连续两个空白记录表示不同数据集之间的中断。请参阅索引(第79页)。
两种情况之间的区别在于,作为同一数据集(一个空白行)一部分的单独曲线将以相同的颜色绘制,并在图例中使用单个条目。不同的数据集将具有不同的颜色和单独的标签。
如果您可以控制输出此数据,则应该很容易更改输出此数据的程序,以添加额外的空白行。如果您不控制它,则一行或两行脚本应该能够根据您给出的行数插入空行,或者检查第一个和第二个数据记录。