さまざまな要因によっては、事前定義されたgnuplotプロット命令で参照されている1つ以上のデータファイルが存在しない場合があります。この場合、「警告:読み取り不可能なファイルをスキップします」というメッセージが表示され、残りの手順がキャンセルされます。
欠落しているデータファイルをスキップして既存のデータファイルをすべてプロットするようにgnuplotに依頼する方法はありますか?
さまざまな要因によっては、事前定義されたgnuplotプロット命令で参照されている1つ以上のデータファイルが存在しない場合があります。この場合、「警告:読み取り不可能なファイルをスキップします」というメッセージが表示され、残りの手順がキャンセルされます。
欠落しているデータファイルをスキップして既存のデータファイルをすべてプロットするようにgnuplotに依頼する方法はありますか?
これはヘルパースクリプトなしの同様の解決策です
file_exists(file) = system("[ -f '".file."' ] && echo '1' || echo '0'") + 0
if ( file_exists("mydatafile") ) plot "mydatafile" u 1:2 ...
その+ 0
一部は、結果を文字列から整数に変換することです。このようにして、否定を使用することもできます。
if ( ! file_exists("mydatafile") ) print "mydatafile not found."
残念ながら、単純なヘルパースクリプトがないと、これを行う方法を理解できないようです。「ヘルパー」を使用した私の解決策は次のとおりです。
#!/bin/bash
#script ismissing.sh. prints 1 if the file is missing, 0 if it exists.
test -e $1
echo $?
次に、実行可能にします。
chmod +x ismissing.sh
これで、gnuplotスクリプトで、簡単な関数を作成できます。
is_missing(x)=system("/path/to/ismissing.sh ".x)
次に、次のようにプロットコマンドを保護します。
if (! is_missing("mydatafile") ) plot "mydatafile" u 1:2 ...
編集
ファイルが欠落しているため、gnuplotが窒息していないようです-gnuplotが欠落しているデータからプロットの範囲を設定しようとすると、実際の問題が発生します(軸範囲を自動スケーリングしていると仮定します)。別の解決策は、軸の範囲を明示的に設定することです。
set xrange [-10:10]
set yrange [-1:1]
plot "does_not_exist" u 1:2
plot sin(x) #still plots