10

さまざまな要因によっては、事前定義されたgnuplotプロット命令で参照されている1つ以上のデータファイルが存在しない場合があります。この場合、「警告:読み取り不可能なファイルをスキップします」というメッセージが表示され、残りの手順がキャンセルされます。

欠落しているデータファイルをスキップして既存のデータファイルをすべてプロットするようにgnuplotに依頼する方法はありますか?

4

2 に答える 2

11

これはヘルパースクリプトなしの同様の解決策です

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."
于 2014-08-20T02:19:45.543 に答える
2

残念ながら、単純なヘルパースクリプトがないと、これを行う方法を理解できないようです。「ヘルパー」を使用した私の解決策は次のとおりです。

#!/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
于 2012-07-23T12:27:17.230 に答える