4

ファイル内に -256 から +256 までのランダムな値を持つファイルがあります。各エントリは新しい行にあります。このファイルを、ファイル内の値を y 軸にプロットしたいと考えています。plot コマンド実行時のエントリ数がわかりません。誰でもこれを行う方法を知っていますか?

4

1 に答える 1

5

私があなたを正しく理解している場合、あなたのファイルは次のようになります。

100
-120
248
10
-212
...

(私は整数を使用しましたが、浮動小数点数は問題なく機能します...「1.e-5」のような数値でも問題ありません)その場合は、非常に簡単にプロットできます。

plot 'datafile.txt' using 1

x値は0から始まり、ファイルの行数まで上がります。詳細については、を参照help datafile usingしてください。

すべてのポイントのx値を同じにしたい場合は、次のようにすることができます。

plot 'datafile.txt' using (0.0):1

おそらくx軸のゼロ範囲に関する警告が表示されます(これは問題ではありません-gnuplotは正しいことをしました)。本当に警告を取り除きたい場合は、プロットする前に(またはプロット中に...)xrangeを設定してください

例えば

set xrange [-1:1]
plot 'datafile.txt' using (0.0):1

また

plot [x=-1:1] 'datafile.txt' using (0.0):1

編集

以下のコメントであなたが言ったことに基づいて、gnuplotで実行しているスクリプトは次のようになります。

set terminal png 
set output "waveform-hy1-00000001-20120501-160221.929.raw.png" 
plot 'waveform.txt' with dots # it shouldn't matter, but I always use a using statement just for clarity.
replot        # <--- a replot after a plot is probably not what you want here.
set output "delta-hy1-00000001-20120501-160221.929.raw.png"  #<-- Nothing will be written to this file...

いくつかのコメント-まず、プロットする前に、出力ファイル(waveform.txt)とスクリプトファイル(temp)をフラッシュ/クローズしますか?出力がバッファリングされている場合、gnuplotがそれを読み取ろうとすると、これらのファイルの1つが空になる可能性が十分にあります。次に、出力ファイル名をリセットせずにプロットと再プロットを行うことは、(通常は)希望するものではありません。それで何を達成しようとしていましたか?あなたが欲しかったかもしれません:

set terminal png 
set output "waveform-hy1-00000001-20120501-160221.929.raw.png" 
plot 'waveform.txt' using 1 with dots
set output "delta-hy1-00000001-20120501-160221.929.raw.png"
replot 

これにより、2つの異なるファイルに同じプロットが生成されますが。2つの異なるファイルの目的は何ですか?あなたが見せていないものは他にありますか?おそらく、ファイルの内容全体を、実行tempしようとしていることの説明とともに貼り付けると、さらに支援を受けることができます。(また、このスクリプトでは引用符を混在させています。スクリプトをC ++プログラムで記述している場合は、tempを作成するときに引用符を適切にエスケープしたことを確認する必要があります)。

最後に、どのOSを使用していますか?私が経験したことのないウィンドウでgnuplotを使用することについてはたくさんあります...

于 2012-06-06T16:13:50.010 に答える