gnuplotで関数プロットの形がおかしい場合 : samplesの値の設定について
gnuplotで関数をプロットしたとき、「そうはならないはずでは?」みたいなプロットになるときがあります。この場合の原因は
3.についてもいろいろ状況によるのですが、今回は最も基礎的なsamplesの値の設定について解説していきます。
(追記 : 当初「sample」で説明していましたが、ドキュメントでは「samples」となっていたので表記をそちらに合わせました。なおコマンドからの設定ではsampleでもsamplesでもどちらも同じように使えるようです)
をプロットしてみます。これは特に問題はありません。
次に
をプロットしてみます。何やらカクカクしたプロットになってしまい、グラフ自体も単なるsin関数ではそうはならない形になってしまっています。
もっと分かりやすく
をプロットしてみると明らかにおかしいグラフになってしまうことが分かります。
「samplesの値」とはなんぞや?というと、これはプロット時のサンプリングレートのことで、この値が大きければ大きいほどより詳細に関数をプロットすることが出来ます。
(ただ値を大きくすればいいというものではなく、あまりこの値を大きくするとプロット処理にかかる時間が長くなります)
通常は初期状態で設定されているsamplesの値で大丈夫なのですが、場合によっては値を変更して対応する必要が出てきます。
とします。すると以下のように出力されると思います。
ここではsamplesの値は100になっています。
(2つ目の値は3Dプロット時に効いてくる模様)
とします。
ここで意地悪く値を10に設定してsin(x)をプロットしてみます。明らかにおかしくなりそうな設定にして試してみるわけです。
出力は上のグラフのように明らかsin(x)ではない形状になりました。このようにsamplesの値が適切で無ければ、グラフは適切にプロットされないことが分かります。
次に初期状態の10倍の1000に設定してsin(x*10)をプロットしてみます(見やすくするため、若干xrangeとyrangeの値を変更しています)。
見た感じ、sin関数が密に詰まった様子が再現出来ているようです。このプロットの場合、値は700くらいまで上げるとほぼ想定通りに出力されました。もっと値を上げていってもいいのですが、出力はほぼ同じなので適度な数値に留めておきましょう。
その他、gnuplot関連のブログ記事
Amazonショッピングサイト gnuplot関連書籍など
- そうなるはずと考えていたこと自体が単なる勘違いだった
- plotコマンドの書き間違い
- plotの設定が不適切だった
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関連書籍など
コメント
コメントを投稿