【问题标题】:How do I plot a collection of csv files in gnuplot?如何在 gnuplot 中绘制一组 csv 文件?
【发布时间】:2012-05-18 22:06:11
【问题描述】:

我有一组具有相同 2 列格式的 csv 文件。我想生成与每个文件对应的单独的 xy 散点图,但样式相同。唯一应该改变的是输入和输出文件名。怎么做?

【问题讨论】:

    标签: shell unix gnuplot


    【解决方案1】:

    andyras 发布的解决方案是完全可行的。但是,在这些情况下,“HERE”文件通常会更好,因为它避免了产生额外的进程,而且混合单引号和双引号不会有问题......

    for file in $(echo *.dat); do
        gnuplot <<EOF
        set terminal post enh
        set output "output_${file}.ps"
        set datafile separator ','  #csv file
        plot "$file" u 1:2
    EOF
    done
    

    【讨论】:

    • 我喜欢这个,因为它更干净。谢谢!
    【解决方案2】:

    首先,创建一个包含所有样式信息的文本文件,例如gplot_prefix.txt。然后,我假设您有一些匹配您要绘制的所有文件的模式,比如*.dat。然后,制作一个 zsh 脚本如下:

    foreach arg in $@
        filename=${arg}_plotfile.pl
        cp gplot_prefix.txt ${filename}
        echo set output ${arg}.png >>${filename}
        echo plot \"${arg}\" u 1:2 >>${filename}
        gnuplot ${filename}
        rm ${filename}
    

    (这可能有错误;我的 zsh 现在不能正常工作)并像这样调用它

    ./plotscript.zsh *.dat 
    

    【讨论】:

      【解决方案3】:

      您可以创建一个包装器 bash 脚本并将其保存为 plot.sh:

      #!/bin/bash
      
      echo "set terminal postscript enhanced
      set output 'output_$1.eps'
      
      plot '$1'
      

      假设您的数据文件都具有.dat 扩展名。你可以通过调用来使用它

      for datfile in $(ls *dat) ; do ./plot.sh $datfile ; done
      

      在 bash 的命令行中。

      【讨论】:

      • 哦,@Dan 发布了几乎相同的解决方案。
      猜你喜欢
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多