LoginSignup
2
2

More than 1 year has passed since last update.

TEXのためのgnuplot超基本(2分で読めます)

Last updated at Posted at 2022-07-28

はじめに

卒論に使う際のTEXの超基本を2分で読めるくらい短くさっと押さえておこう。

TEXで一番しんどいのは導入だが、以下の記事を使えば1分ほどで導入できる。

1変数関数をグラフに表す

コマンドプロンプトで

$ gnuplot

とすれば、gnuplotを開くことができる。
例えば、sin(x)を書いてみようか。


gnuplot> plot sin(x)

これだけで次のように書ける。
スクリーンショット 2022-07-27 19.53.42.png

TEXで使うために...

さて、TEXで画像を貼り付ける際はepsファイルにする必要があるので、そこも含めて見ていこう。

次のコードでファイル作成+軸ラベルの名付け+グラフ記述までできる。難しくないので一行一行実行してみてほしい。
途中でている数式は次のような複雑な関数を得るためのコードである。(sin(x)の例だけしかみてないと応用できないため。)
スクリーンショット 2022-07-27 20.28.27.png


gnuplot> set terminal postscript eps enhanced color
gnuplot> set output 'mx.eps'
gnuplot> set xlabel 't'
gnuplot> set ylabel 'my'
gnuplot> plot cos(x)/(sqrt(2)*cosh(0.1*x)+sinh(0.1*x)) with line

1行目:eps形式で出力するよ宣言。enhanced colorといれると紫色の線で出力される。コピペでおk
2行目: "set output 'ファイル名.eps' " でファイルが生成される。
3行目:横軸のラベルをどうするか。
4行目:縦軸のラベルをどうするか
5行目:複雑な関数でも地道に打ち込むべし。(物理学やるなら無次元化をお忘れなく)

パラメータ表示をする(3次元)

次のように3次元の関数を書きたければ次のようにする。
plotするのは関数のみならず、datファイルでも良い!気にしなくて良いんだ!
以下では事前に作成してあったdatファイル(5000行、3列の数値データ)を使った。


gnuplot> set parametric
gnuplot> set output 'mxmymz.eps'
gnuplot> set xlabel "mx"
gnuplot> set ylabel "my"
gnuplot> set zlabel "mz"
gnuplot> set terminal postscript eps enhanced color
gnuplot> splot "mxmymz.dat" with line

1行目:パラメータ表示の時はコレを使う
7行目: 3次元の描写をしたければ splot を使う。
スクリーンショット 2022-07-27 20.31.45.png

関数の時のパラメータ表示

上記ではdatファイルを使ったが、心配症の人のためにdatファイルではなく関数での書き方も一応みておこうか

(物理が気になる人。以下はLLG方程式の解析解のパラメータ表示である。)


gnuplot> set parametric
gnuplot> set output 'mxmymz.eps'
gnuplot> set xlabel "mx"
gnuplot> set ylabel "my"
gnuplot> set zlabel "mz"
gnuplot> set terminal postscript eps enhanced color
gnuplot> splot cos(u)/(sqrt(2)*cosh(0.1*u)+sinh(0.1*u)), sin(u)/(sqrt(2)*cosh(0.1*u)+sinh(0.1*u)), (1+sqrt(2)*tanh(0.1*u))/(sqrt(2)+tanh(0.1*u)) with line

datのやり方との違いは一番下の行だけである。
** splot 関数, 関数, 関数 with line ** でOK!

表示結果は...

スクリーンショット 2022-07-28 16.10.20.png

あれ。なにか短くない?
伸ばしてみようか。

実は、gnuplotは各点と点の間の線は自動で計算してくれているのだが、点が少なすぎるとこんな風にちゃんとしたデータが生じなくなってしまう。
次のようにしよう


gnuplot> set samples 5000
gnuplot> splot [0:1000] cos(u)/(sqrt(2)*cosh(0.1*u)+sinh(0.1*u)), sin(u)/(sqrt(2)*cosh(0.1*u)+sinh(0.1*u)), (1+sqrt(2)*tanh(0.1*u))/(sqrt(2)+tanh(0.1*u)) with line

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2