【问题标题】:How to plot several datafiles in consecutive graphs using gnuplot如何使用 gnuplot 在连续图中绘制多个数据文件
【发布时间】:2016-01-07 13:53:04
【问题描述】:

我有大量按data.xxxx.tab形式命名的ASCII文件,其中“xxxx”是0000到9999之间的数字。每个文件包含5列,其中第一列是X坐标,第二个用于 Y 坐标,其余三个用于我希望针对 X 坐标绘制的变量。我需要知道如何在 gnuplot 4.6 中编写一个循环,它可以针对 X 坐标绘制其中一个变量的连续图。

我已经尝试过以下帖子中的说明:

Plotting with gnuplot from several files

和

gnuplot : plotting data from multiple input files in a single graph

但是这些创建了一个单一的图表,其中包含来自所有数据文件的所有曲线,而我需要的是一个接一个地绘制的连续图表,从而显示变量图表的时间演变。

【问题讨论】:

    标签: loops gnuplot


    【解决方案1】:

    以下应该有效:

    # fix axes for proper comparison between graphs
    set xrange [0:10]
    set yrange [0:10]
    
    # if you want an animated gif
    set term gif animate
    set output 'output.gif'
    
    # then plot your data
    do for [n=0:9999]{
        plot sprintf("data.%04d.tab", n) using 1:2 title 'case '.n
    }
    

    sprintf 命令中的%04d 字符串打印数字n,直到n 的最小字段宽度前四个零,即n=2 打印为0002,而n=9999 为打印为9999。

    【讨论】:

    • 非常感谢!你的建议效果很好。如果不麻烦,我想知道这种方法对 .flt 或 .dbl 文件的工作方式是否与 .tab 数据文件相同?
    • tab、flt 和 dbl 文件有什么区别?这些不是标准的文件扩展名。
    • @MeirZeilig-Hess 我不知道这些文件扩展名是什么,但这种方法适用于任何文件扩展名和任何包含数据列的 ascii 文件。
    • .flt 是单精度(4 字节)二进制数据文件,而 .dbl 是双精度(8 字节)二进制数据文件。在这两种情况下,数据都可以按列排序,类似于 .tab ASCII 文件。
    • 对于二进制数据,在文件名后添加binary 说明符:plot sprintf(...) binary format="%5double" using 1:2。 %5double 告诉 gnuplot 数据被格式化为五列双精度数。
    【解决方案2】:

    我建议使用调用 gnuplot 文件的 shell 脚本

    文件plot.gp:

    set term png
    set out fname.".png"
    set title fname
    plot fname w l
    

    然后在shell中:

    for fname in data.????.tab; do gnuplot -e fname=\"$i\" plot.gp; done
    

    您将为每个 data.xxxx.tab 获得一个名为 data.xxxx.tab.png 的文件。

    【讨论】:

      猜你喜欢
      • 2021-01-14
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      相关资源
      最近更新 更多