gnuplotのディレクトリにあるすべてのファイルをプロットします。

gnuplotのディレクトリにあるすべてのファイルをプロットします。

gnuplotでディレクトリ内のすべてのファイルをプロットするには?つまり、15個のデータファイルがあると、15個のチャートが得られます。

plot '???' with lines 

答え1

ソリューションには次のもののみが必要です。多すぎる注意事項(ファイル名の空白、データはありませんがフォルダ内のファイルなど)。自分の責任で使用してください。

plot for [fn in system("ls")] fn with lines title ''.i

もちろん、正しいアプローチは、ファイル名を順番に指定し、forより通常の方法で書き換えることです。

plot for [i=1:15] `mydata`.i.`.dat` using 1:2 with lines title `data set `.i

forforはplot最新バージョンでのみ利用可能ですgnuplot

編集する:コメントやチャットでリクエストした内容に基づいて最終的に使用されるフォームです。もう一度言うが、これは速くて汚れているので、危険負担は本人が監修して使用してください。

j=0
do for [fn in system("ls")] {
    j=j+1; set term png
    set output ''.fn.'.png'
    plot fn with lines linecolor rgb "navy" title ''.i 
}

答え2

Weijun Zhouは可能ですが、少し不安定な解決策を示しました。データファイルの数が多く、数式に従うように手動で名前を変更するのが実用的でない場合は、ファイルの種類(.txt、.dat、データが保存されている場所)を確認して、不要なファイルをフィルタリングできます。必要ありません。

例:フォルダにすべての.txtファイルを保存し、将来の分析のために.pngとして保存します。

do for [fn in system("ls")] {
    len=strlen(fn)
    form=substr(fn,len-3,len)
    if (form eq ".txt") {
        set term png

        data=sprintf("%s",fn)
        filename=sprintf("%s.png",substr(fn,0,len-4))

        set output filename
        plot data using 1:2 title "Data"
        unset output
    }
}

これは各ファイルを繰り返して.txtファイルであることを確認し、ファイルを描画して元の.txtファイルと同じ名前の.pngとして保存します。これにより、同じフォルダに重複する.txtファイルがない限り、プログラムが誤ったファイル形式を読み取ろうとしたときに発生する可能性がある問題を回避できます。

注:このスレッドを見ている人がWindowsバージョンのGnuplotでこのスレッドを実行したい場合は、システムコマンドが異なるため、最初の行を変更する必要があります。

system("ls") => system("dir /b")

関連情報