gnuplotで関数プロットの形がおかしい場合 : samplesの値の設定について

gnuplotで関数をプロットしたとき、「そうはならないはずでは?」みたいなプロットになるときがあります。この場合の原因は
  1. そうなるはずと考えていたこと自体が単なる勘違いだった
  2. plotコマンドの書き間違い 
  3. plotの設定が不適切だった
などに分かれるでしょう。1.と2.はよくあることなのでここでは考えないことにします。
3.についてもいろいろ状況によるのですが、今回は最も基礎的なsamplesの値の設定について解説していきます。

(追記 : 当初「sample」で説明していましたが、ドキュメントでは「samples」となっていたので表記をそちらに合わせました。なおコマンドからの設定ではsampleでもsamplesでもどちらも同じように使えるようです)

想定とは違うプロットになる例

まず
plot sin(x)

をプロットしてみます。これは特に問題はありません。
次に
plot sin(x*5)

をプロットしてみます。何やらカクカクしたプロットになってしまい、グラフ自体も単なるsin関数ではそうはならない形になってしまっています。
もっと分かりやすく
plot sin(x*10)

をプロットしてみると明らかにおかしいグラフになってしまうことが分かります。

samplesの値を適切に設定する

こうなってしまう原因は、初期状態で設定されているsamplesの値が関数によってはプロットするには適切ではなくなるためです。
「samplesの値」とはなんぞや?というと、これはプロット時のサンプリングレートのことで、この値が大きければ大きいほどより詳細に関数をプロットすることが出来ます。
(ただ値を大きくすればいいというものではなく、あまりこの値を大きくするとプロット処理にかかる時間が長くなります)

通常は初期状態で設定されているsamplesの値で大丈夫なのですが、場合によっては値を変更して対応する必要が出てきます。

samplesの値の確認

まずいま現在のsamplesの値を確認するには
show samples

とします。すると以下のように出力されると思います。
sampling rate is 100, 100

ここではsamplesの値は100になっています。
(2つ目の値は3Dプロット時に効いてくる模様)

samplesの値の設定

さて、samplesの値を変更するには
set samples 値

とします。
ここで意地悪く値を10に設定してsin(x)をプロットしてみます。明らかにおかしくなりそうな設定にして試してみるわけです。
出力は上のグラフのように明らかsin(x)ではない形状になりました。このようにsamplesの値が適切で無ければ、グラフは適切にプロットされないことが分かります。

次に初期状態の10倍の1000に設定してsin(x*10)をプロットしてみます(見やすくするため、若干xrangeとyrangeの値を変更しています)。
見た感じ、sin関数が密に詰まった様子が再現出来ているようです。このプロットの場合、値は700くらいまで上げるとほぼ想定通りに出力されました。もっと値を上げていってもいいのですが、出力はほぼ同じなので適度な数値に留めておきましょう。

最後に

以上のように、より正確に関数をプロットをするにはsamplesの値を適切に設定する必要があることが分かりました。特に曲線が多いプロットになる場合は注意して設定した方がいいでしょう。


その他、gnuplot関連のブログ記事


Amazonショッピングサイト gnuplot関連書籍など

コメント

スポンサーリンク


このブログの人気の投稿

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplotでプロットなどの色をcolornameの指定で変更する

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)

Pythonのformat()を使って1桁の16進数でも2桁で出力する方法