web-dev-qa-db-ja.com

gnuplotで配列をループ

この質問は gnuplot内のループ構造? および DarioP によって answer に関連しています。

gnuplot 4.6はdoコマンドを導入しました。これを使用して、例のファイルや色の配列をループするにはどうすればよいですか?正しい構文は何ですか?

colors = "red green #0000FF"
files = "file1 file2 file3"

do for [i=1:3] {
  plot files(i).".dat" lc colors(i)
}
27

すべてのファイルを単一のプロットにしたい場合は、plot for[...(バージョン4.4以降でサポート)を使用する必要があります。 do for(バージョン4.6以降でのみサポート)を使用した複数のplotコマンドのループは、multiplotモードでのみ機能します。

次の2つのソリューションでは、すべてのデータを1つのグラフにプロットしますが、反復は少し異なります。

最初のソリューションは、Wordを使用して、プロット時に文字列から直接Wordを抽出します。

colors = "red green #0000FF"
files = "file1 file2 file3"
plot for [i=1:words(files)] Word(files, i).'.dat' lc rgb Word(colors, i)

2番目のソリューションは、linetypeを変更し、インデックスを使用する代わりに、Wordリストを直接反復処理します。

colors = "red green #0000FF"
files = "file1 file2 file3"
set for [i=1:words(colors)] linetype i lc rgb Word(colors, i)
plot for [file in files] file.'.dat'
38
Christoph