使用 gnuplot 或 python 绘图

plot using gnuplot or python

我有一个包含轨迹的 txt 文件。我如何通过 gnuplot 绘制第 3 列并用垂直线分隔轨迹。

#indexes:         0
   1        -0.375E+04         0.382E+01        
   2        -0.375E+04         0.332E+01        
   3        -0.376E+04         0.353E+01        
#indexes:        1
   1        -0.735E+04         0.093E+01
   2        -0.735E+04         0.096E+01
   3        -0.735E+04         0.082E+01
   4        -0.735E+04         0.094E+01
#indexes:         2
   1        -0.835E+04         0.401E+01
   2        -0.035E+04         0.438E+01
   3        -0.365E+04         0.438E+01 

我有很多索引。

照片:

这里有一个示例 shell 脚本,可用于您的示例数据。 它假定数据在文件 data 中,创建第二个 tmp 文件 /tmp/data2, 和一张图片 /tmp/data.png.

#!/bin/bash
max=$(awk <data '
 !/^#indexes/{ if(+0>max)max =  }
 END {print max}')

awk <data >/tmp/data2 -vmax="$max" '
  /^#indexes/ {printf "%s %s\n",i,max; next}
              { i++; }'

gnuplot <<\!
set terminal png
set output "/tmp/data.png"
plot "data" using 3 with lines linetype rgb "red",\
 "/tmp/data2" using 1:2 with impulse linetype rgb "blue"
!
# eg: display /tmp/data.png

第一个 awk 找到第三个字段的最大值。第二个awk 为每个“#indexes”行创建一个数据行 "i max",其中 i 计数 数据行数,即蓝色垂直线的 x 轴值 行。