gnuplot全般
gnuplotのインストール
apt-get install gnuplot apt-get install gnuplot-x11
軸ラベルのオフセット指定
set xlabel "x" offset *,* set ylabel "y" offset *,*
対数スケールの設定と軸ラベルの書式設定
set logscale x set format x "$10^{%L}$"
軸ラベルの冪乗表示設定
set format x "$%.0t \\times 10^{%T}$"
gnuplotのepslatexでの出力
set terminal epslatex color 12(文字サイズ) set output "graph.eps"グラフを描画した後、すぐに別名でoutputを指定しないとepsの凡例表示がおかしくなったり、そもそもコンパイルエラーが出る。
gnuplotのepslatexで綺麗なepsファイルを作る
LaTeXの文章に貼り付けるだけならいいが、文字入りのファイルを作るのであれば\documentclass[12pt]{article} \usepackage[dvips]{graphicx} \pagestyle{empty} \begin{document} \input{graph.tex} \end{document}で画像を貼り込んだLaTeXファイルをコンパイルし、できたdviファイルを
dvips -E -o figure.eps figure.dviこのままだと余白がやや大きいのでepstoolを用いて余白を最小化する(standaloneクラスはあまり役に立たない)。
epstool --copy --bbox figure.eps dammy mv dammy figure.epsubuntu用にスクリプト化するならこんな感じ
#!/bin/sh gnuplot $1.gp echo '\\documentclass[12pt]{article}' > figure.tex echo '\\usepackage[dvips]{graphicx}' >> figure.tex echo '\\usepackage{amsmath,amssymb}' >> figure.tex echo '\\pagestyle{empty}' >> figure.tex echo '\\begin{document}' >> figure.tex echo '\\input{graph.tex}' >> figure.tex echo '\\end{document}' >> figure.tex latex figure.tex dvips -E -o figure.eps figure.dvi epstool --copy --bbox figure.eps dammy mv dammy $1.eps rm graph.tex rm graph.eps rm figure*ただしgpファイルの先頭に
set terminal epslatex color 12 set output "graph.tex"を入れておく必要がある。 ただしepstoolはバグでものすごくおかしなBoundingBoxを叩き出すことがある(set size squareとunset yticsを組み合わせたときに起こったことを確認)。この場合はepstoolを使う代わりに
eps2eps figure.eps dammyとしてdammyの中のBoundingBoxを元々のfigure.epsに設定すれば良い。スクリプトにするなら
#!/bin/sh gnuplot $1.gp echo '\\documentclass[12pt]{article}' > figure.tex echo '\\usepackage[dvips]{graphicx}' >> figure.tex echo '\\usepackage{amsmath,amssymb}' >> figure.tex echo '\\pagestyle{empty}' >> figure.tex echo '\\begin{document}' >> figure.tex echo '\\input{graph.tex}' >> figure.tex echo '\\end{document}' >> figure.tex latex figure.tex dvips -E -o figure.eps figure.dvi eps2eps figure.eps dammy DAM=`sed -n '2,2p' dammy` sed -i "5c$DAM" figure.eps mv figure.eps $1.eps rm dammy rm graph.tex rm graph.eps rm figure*
gnuplotでグラフをアスキーアートで表示する
set terminal dumb
gnuplotのeveryの使い方
every 行刻み:ブロック刻み:初期行:初期ブロック:終了行:終了ブロック
範囲を指定してプロットする
plot [a:b] f(x)はset xrangeと矛盾すると挙動が変になるのであまり使い物にならない。ここは3項演算子とやらを使って
plot ((x-a)*(x-b) < 0 ? f(x) : 1/0)
Mathematicaっぽい外見の関数プロット
ここを参照リストデータのみからヒストグラムを作る
gnuplotではKaleida graphなどの有料グラフ作成ソフトと違ってリストデータからヒストグラムは作られないと思っていたがそんなことはなかった。 ここを参照複数ファイルを1つに結合してプロットする
plot "< paste file1.dat file2.dat" using 1:($2/$4)
線分を引く
set arrow from *,* to *,* nohead lc * lw *
点を打つ
set label 1 point ps * pt * lc * at *,*splotで線、点を描画する場合はfrontも付ける。
組み込み関数atan2(y,x)=atan(y/x)
atan2(x,y)ではないので注意 (fortranと同じでMathematicaと逆)