如何在 GNUPLOT 中将一行绘制为一条线
How to plot a row as a line in GNUPLOT
几年前我看到过类似的问题,但答案基本上涉及在绘图之前转置数据。随着 GNUPLOT 的发展,也许今天有更简单的方法来处理这个问题?
我的数据是模拟过程中不同时间步长的成分分布图。每条线代表元素在特定时间在 space 中不同点的组成,我想逐行绘制这一行,在最简单的情况下只有一行,如 this
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
结果:
几年前我看到过类似的问题,但答案基本上涉及在绘图之前转置数据。随着 GNUPLOT 的发展,也许今天有更简单的方法来处理这个问题?
我的数据是模拟过程中不同时间步长的成分分布图。每条线代表元素在特定时间在 space 中不同点的组成,我想逐行绘制这一行,在最简单的情况下只有一行,如 this
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
结果: