如何在GNUPLOT中将行绘制为直线

如何在GNUPLOT中将行绘制为直线,gnuplot,Gnuplot,几年前我曾见过类似的问题,但答案基本上涉及到在绘图之前转换数据。随着GNUPLOT的发展,今天是否有更简单的方法来处理这个问题 我的数据是模拟过程中不同时间步的合成曲线。每一行代表一个元素在特定时间在空间中不同点的组成,我想一行一行地绘制,在最简单的情况下,就是这样的一行 plot '-' using ?:? with lines ls 1 0.310 0.318 0.334 0.364 0.413 0.476 0.532 0.569 0.588 0.595 e 由于模拟可能需要几个小时(

几年前我曾见过类似的问题,但答案基本上涉及到在绘图之前转换数据。随着GNUPLOT的发展,今天是否有更简单的方法来处理这个问题

我的数据是模拟过程中不同时间步的合成曲线。每一行代表一个元素在特定时间在空间中不同点的组成,我想一行一行地绘制,在最简单的情况下,就是这样的一行

plot '-' using ?:? with lines ls 1
 0.310 0.318 0.334 0.364 0.413 0.476 0.532 0.569 0.588 0.595

e
由于模拟可能需要几个小时(几天),所以只要让模拟器在特定的时间步生成这样一行,就可以看到配置文件是如何演变的。对于特定时间的快照,我当然可以在列中写入值并“使用0:1”进行“绘图”-“但由于我希望在同一文件中保存多个快照,因此将每个配置文件作为一行比较简单,而不仅仅是一个非常长的文件,每行只有一个值。

最后,我将有兴趣以节省的时间步长绘制所有配置文件,但我当然可以转置配置文件矩阵。

如果您的数据是严格的矩阵(即每行的列数相等),则可以绘制如下所示的行:

代码:

### plotting rows
reset session

$Data <<EOD
 0.310 0.318 0.334 0.364 0.413 0.476 0.532 0.569 0.588 0.595
 1.310 1.318 1.334 1.364 1.413 1.476 1.532 1.569 1.588 1.595
 2.310 2.318 2.334 2.364 2.413 2.476 2.532 2.569 2.588 2.595
 3.310 3.318 3.334 3.364 3.413 3.476 3.532 3.569 3.588 3.595
EOD

myRow = 2     # counting starts from 0
set key left

plot $Data matrix u 1:3 every :::myRow::myRow w lp pt 7 lc "red" ti sprintf("Row number %d",myRow)
### end of code
###打印行
重置会话

$Data谢谢,它很神秘,但我会测试。@BoSundman这对你有用吗?您可能想看看这里:绘制一行与另一行。更加神秘;-)这对我很有效谢谢你。我必须绘制的每一行都是一个时间步长,因此我不需要绘制相对于另一行的行。但我不明白这些:::在答案中,GNUPLOT确实很强大,但正如我所写的,相当神秘。幸运的是,手册不足时会出现stackowerflow。@BoSundman如果此答案解决了您的问题,请检查答案是否为helfpul/可接受。请每检查一次手册
帮助
。我同意,在某些情况下,文档可以改进,特别是使用实际示例。在“正常”列数据的情况下,
每个
都是设置步骤、点和块的开始、结束。但使用选项
matrix
显然是在设置列和行的步骤、开始、结束。