[更新情報]

▽Go to footer

gnuplot のコマンドプロンプトからの使い方のメモを整理しておくことにしました.

gnuplot memo:基礎 目次

コマンドプロンプトから使う



インストール (2012.03.13 修正)

gnuplot-----bin
         |
         +--contrib
         |
         +--demo
         |
         +--docs
         |
         +--etc
         |
         +--license
         |
         +--share


概要

gnuplot をインストールしたら,環境変数で「;c:\gnuplot\bin」(cドライブにインストールした場合)を追加し,パスを通すことを忘れないで下さい.

事前に gnuplot のコマンドを記載した「gpl_***.txt」というテキストファイルと,ブランク区切りのデータファイルを準備します.DOS のコマンドプロンプトを起動したら,コマンド記載ファイルとデータファイルを保存しているディレクトリに移動し,以下のコマンドを入力します.なおコマンド記載ファイルの拡張子は自由につけられますが,ここでは「gpl_***.txt」としています.(gnuplot の説明書での拡張子は「.gp」か「.plt」のようです.)

>gnuplot gpl_test0.txt

一度に多くの処理をしたい場合は,例えば下のような「a.bat」というバッチファイルを書いて,これを実行すれば手間がかかりません. なお,バッチ処理するのであれば,wgnuplotよりもgnuplot(pipeを使えるconsole mode)の方がいいみたいです.(2011.01.24追記)

gnuplot gpl_png_test.txt
gnuplot gpl_ps_test.txt
rem
gnuplot gpl_sample_line1.txt
gnuplot gpl_sample_line2.txt
gnuplot gpl_sample_point.txt
gnuplot gpl_sample_plot.txt
gnuplot gpl_sample_label.txt
gnuplot gpl_sample_BC.txt
gnuplot gpl_sample_vector1.txt
gnuplot gpl_sample_vector2.txt
gnuplot gpl_day_test.txt
gnuplot gpl_sample_polar.txt
gnuplot gpl_sample_bigf.txt
rem
gnuplot gpl_test0.txt
gnuplot gpl_test1.txt
gnuplot gpl_test2.txt
gnuplot gpl_test3.txt
gnuplot gpl_test4.txt
gnuplot gpl_test5.txt
gnuplot gpl_test6.txt
gnuplot gpl_test7.txt
gnuplot gpl_test8.txt
gnuplot gpl_test9.txt
gnuplot gpl_CHtest.txt
gnuplot gpl_TRS.txt


注意



pngのターミナル・テスト

出力ターミナルを png とした場合の「test」コマンド実行結果です.出力ターミナルが「windows」の場合は,線色の並びが異なりますので注意.

ファイル名概要
コマンド記述ファイル
出力図


線色のテスト(デフォルト:linetype)

出力ターミナルをpngとし,「linetype」を変化させた場合の線色のサンプルです.黒線は「linetype -1」です.「linetype 0」は点線ですが「linewidth 1」の場合でないと表現できないようです.

ファイル名概要
コマンド記述ファイル
出力図


線色再定義のテスト(linetype)

線色を16進数で再定義したものです.

ファイル名概要
コマンド記述ファイル
出力図


プロット記号のテスト(pointtype)

出力ターミナルを png とし,「pointtype」を変化させた場合のプロット記号のサンプルです.「pointtype 0」は「dots」と同じ(小さい点)です. ここでは「test-point.txt」を読み込んで,y軸値を plot コマンド内で変化させて記号をプロットしています. プロット色は,デフォルトの linetype と pointtype の数値を合わせることにより変化させています.「pointtype 0」(小さい点)の色は「linetype -1」(黒)としました.

ファイル名概要
コマンド記述ファイル
データファイル
出力図


プロットスタイルのテスト(with points etc.)

ここでは,1つのコマンド記述ファイルで8個のグラフを書かせています.一部0軸を入れる試行も行っています.

ファイル名概要
コマンド記述ファイル
with lines
with points
with linespoints
with steps
with histeps
with dots
with impulse
with boxes


ラベルのテスト(label)

ここでは,ラベルの座標系,描画の基準位置,回転の動作確認を行っています.

ファイル名概要
コマンド記述ファイル
出力図


棒グラフのテスト(with boxes)

棒グラフの作成テストです.色で塗りつぶすものと,パターンで塗りつぶすものの2種類を作成してみました.

ファイル名概要
コマンド記述ファイル
データファイル
出力図:色塗りつぶし
出力図:パターン塗りつぶし


ベクトル図のテスト(with vector)

ここでは,媒介変数(角度を示す変数は「t」)を用いて円を描き,その上に外部の入力ファイルに格納したベクトル描画用データをプロットしています. データファイルの区切り文字は”, ”です.データの並びは以下のとおりで,4 列並びです.3・4 列は終点座標ではなく,始点からの増分を指定することに注意します.

始点x座標 , 始点y座標 , x増分 , y増分

出力図 (1) では矢印を,出力図 (2) では (1) と同じ矢印に加え,nohead の矢印を用いた直線描画も取り入れてみました.

# 矢印の描画
set style arrow 1 size graph 0.05,20 empty linewidth 2
set arrow as 1 from -1,0 to 1,0

# 4本の直線(nohead矢印)による正方形の描画
set style arrow 2 size graph 0.05,20 filled nohead linewidth 1 linetype 3 
set arrow as 2 from  5,-5 to  5, 5
set arrow as 2 from  5, 5 to -5, 5
set arrow as 2 from -5, 5 to -5,-5
set arrow as 2 from -5,-5 to  5,-5
ファイル名概要
コマンド記述ファイル (1)
コマンド記述ファイル (2)
入力データ (1)
入力データ (2)
出力図 (1)
出力図 (2)


横軸日付グラフのテスト(set xdata time)

横軸を日付としたグラフの作成テストです.ここ 20 年間の前橋の月平均気温,月最高気温,月最低気温,月間雨量をプロットしています.いずれも各月 15 日を入力日としました.データは気象庁 HP よりダウンロードしました.日付値は 90 度回転にしていますが,このままだとグラフ内に食い込むので,「set xtics offset 0,-4 rotate by 90」と offset で平行移動させています. また,x軸ラベル「Date」も「set xlabel "Date" offset 0,-1.5」で移動させています. データファイルは拡張子は「.txt」ですが,csv 形式です.

ファイル名概要
コマンド記述ファイル
データファイル
出力図


極座標プロットのテスト(set polar)

ここでは,極座標プロットの動作確認を行っています.角度を示す変数は「t」です. 「"-"」を用いて配列を読み込ませていますが,データ並びは(角度,半径座標)です. 「rrange」で半径方向の座標範囲を指定した「つもり」ですが,最大値側は指定通りにならず大きめのものをプロットしてくれています. 半径方向座標がマイナスのデータがある場合,これを指定しないと,マイナス側が表示されないようです.

ファイル名概要
コマンド記述ファイル
出力図


大型csvファイルの作図テスト

ここでは,次のような,振動関連データを格納した大型csvファイルの作図テストを行っています.6行目以下がデータであり,データ行は0〜119999,すなわち10列×12万行からなるカンマ区切りのテキストファイルで,ファイルサイズは8.7MBです.

ここでは,通常のブランク区切りではなく,敢えてカンマ区切りの読み込み実験もかねており,コマンド記載ファイルでは,データ区切り文字を”,”に変更しています.また,サンプリングピッチが0.01秒なので,x値(1列)を0.01倍し,y値を4列としてプロットしました.問題なく作図できています.

・・・・・
set datafile separator ","         #データ区切り文字を変更する
・・・・・
#1列(x値)を0.01倍,y値を4列としてプロット.
plot "bigf_csv.txt" using ($1*0.01):4 with lines linetype 4 notitle
大型csvファイルの書式例
 01 | #test_data_csv
 02 | #ndata,120000
 03 | #dt,0.01
 04 | #t0,0.0
 05 | #i,Pu,Pd,A1,A2,A3,A4,A5,A6,B1
 06 | 0,-0.0008,0.0118,0.1496,0.0103,0.0596,0.1692,0.1138,0.0240,-0.1913
 07 | 1,-0.0008,0.0038,0.0209,0.0618,-0.0434,-0.1141,0.0880,-0.1047,0.0147
 08 | 2,0.0012,0.0098,0.0209,0.0103,0.1626,0.1434,0.1395,0.1270,-0.1141
 09 | 3,-0.0008,-0.0142,-0.1079,-0.2987,0.0596,-0.1656,-0.0407,0.1270,0.0404
・・・・・
ファイル名概要
コマンド記述ファイル
出力図


postscriptのターミナル・テスト

出力ターミナルを postscript とした場合の「test」コマンド実行結果です.白黒出力の ps ファイルができあがり GSview で見ることができますが,ここでは TeX を介して pdf 化したものも載せておきます.

TeX 文書は以下のようなものです.できあがった dvi ファイルを dvipdfm.exe で pdf 化します.

\documentclass[a4paper,10pt]{jsarticle}

\usepackage[dvipdfm]{graphics,graphicx}
\pagestyle{empty}

\begin{document}

\includegraphics[width=150mm]{fig_ps_test.ps}

\end{document}
ファイル名概要
コマンド記述ファイル
出力図
TeXによるpdf出力


postscript eps の出力事例

出力ターミナルを postscript eps とした場合の出力事例です.TeX に貼り付けると,png 画像との差は歴然としており,eps のすばらしさを見直しています.

ここでは,gnuplot がはき出した eps ファイルを InageMagick の convert -density 300 で png ファイルにして掲載しています.

ファイル名概要
コマンド記述ファイル
コマンド記述ファイル
線種出力事例(白黒)
記号出力事例(白黒)
線種出力事例(カラー)
ラベル出力事例
eps enhanced での出力事例
eps enhanced での出力事例
Post script character codes 出力事例
TeXによるpdf出力


基本的なグラフを描くawkスクリプトの事例 (eps 出力)

出力ターミナルを postscript eps enhanced とした場合の出力事例です.

FEM の出力などの表形式 csv ファイルから awk でデータを読み込み,簡単な計算処理をしながら gnuplot のコマンド記述ファイルを吐き出して実行します. awk スクリプトと gnuplot の実行は,バッチファイルにて行います. gnuplot のコマンド記述ファイルは,大量のデータを伴っているので,省略しています.

ここでは,gnuplot がはき出した eps ファイルを InageMagick の convert -density 300 で png ファイルにして掲載しています.

awk と gnuplot 実行用バッチファイル

gawk -f awk_draw.awk out_result_test_1.csv > gpl_draw.txt
gnuplot gpl_draw.txt

awk スクリプト,入力ファイルと作成したグラフの事例

ファイル名概要
awk スクリプト
入力データファイル
出力事例
出力事例
出力事例
出力事例


png 画像での日本語ラベル表示



注意



日本語ラベル表示事例

ファイル名概要
コマンド記述ファイル
出力図ファイル名フォントファイル名
フォント比較
msgothic.ttc
meiryo.ttc
ipagp.ttf
ipag.ttf
msjh.ttf
msyh.ttf
JGTR00M.TTC
HGRSMP.TTF
HGRHG3.TTC
HGRGM.TTC
ARIALUNI.TTF



eps 画像での日本語ラベル表示



注意



日本語表示事例

ファイル名概要
コマンド記述ファイル EUC
コマンド記述ファイル SJIS
コマンド記述ファイル UTF8N
出力図ファイル名フォントファイル名
EUC
SJIS
UTF8N
pdf



eps 説明図作成事例



postscript eps での極座標活用(埋設鉄管・圧力水路)

出力ターミナルを postscript eps として,極座標で説明図を描いた事例です.いずれにしてもこのような図を Wo*d や Exc*l で描画する気にはなれません.

ファイル名概要
コマンド記述ファイル
コマンド記述ファイル
コマンド記述ファイル
コマンド記述ファイル
コマンド記述ファイル
コマンド記述ファイル
コマンド記述ファイル
Cソース:コマンド記述ファイル出力用
厚肉円筒モデル図
厚肉円筒微小領域図
埋設鉄管図
水路トンネル図(1)
水路トンネル図(2)
水路トンネル図(3)
水路トンネル図(4)
極座標活用のTeXによるpdf出力


eps カラー FEM メッシュ色塗り画像 (polygon 使用)

出力ターミナルを postscript eps color として,set object polygon を用いて,FEM 応力解析結果の主応力値に応じて色分けする図です.この解析では1要素4積分点のものを使っているので,1要素を4分割して各積分点の主応力値の大きさに応じて色分けしています.

ここでは,C 言語によるプログラムと最終的に作成したpng画像を掲示しておきます.eps ファイルは数 MB になりますので png に変換して使用したほうが良いようです.

polygon では,座標と指定領域を塗りつぶす指定を2行で指定する必要があること,座標は閉じている必要があることに注意が必要です.ここでは四角形を塗りつぶしたいので閉じた座標とするため5組の (x,y) 座標を指定しています.

set object 1 polygon from 8.000,0.000 to 8.050,0.000 to 8.038,0.318 to 7.988,0.314 to 8.000,0.000
set object 1 fillcolor rgb "0000ff" fillstyle solid 1.0
set object 2 polygon from 8.100,0.000 to 8.088,0.318 to 8.038,0.318 to 8.050,0.000 to 8.100,0.000
set object 2 fillcolor rgb "#0000ff" fillstyle solid 1.0

凡例は rect で指定していますが,この場合は,1行で座標と指定領域の塗りつぶし指定を行えます.

set object 2492 rect from graph 1.05,0.40 to graph 1.1,0.45 fillcolor rgb "#ff0000" fillstyle solid 1.0 border -1

最後に作図を実行させるため,plot 命令を使っていますが,ここではダミーとして作図領域の隅に dot を打っています.

plot "-" with dots notitle
0.000 0.000
50.000 0.000
50.000 50.000
0.000 50.000
0.000 0.000
e

png 画像作成のバッチファイルの中身は以下の通りです.ImageMagick で余白を削除 (trim) しながら density 300 で eps を png に変換しその後 50 ピクセルの余白をつけて仕上げています.余白をつける時点で透過 png が指定した背景色の画像に変換されます.

gcc -o gccMESH4nod-pg.exe gccMESH4nod-pg.c
gccMESH4nod-pg out4rand19h.csv fig_pg_test2.eps
gccMESH4nod-pg out_test.csv fig_pg_test3.eps
convert -trim -density 300 fig_pg_test2.eps fig_pg_test2.png
convert -trim -density 300 fig_pg_test3.eps fig_pg_test3.png
convert fig_pg_test2.png -bordercolor "#ffffff" -border 50x50 fig_pg_zw_test2.png
convert fig_pg_test3.png -bordercolor "#ffffff" -border 50x50 fig_pg_zw_test3.png
ファイル名概要
コマンド記述ファイル作成およびgnuplot起動用Cプログラム
png画像ファイル
png画像ファイル


eps カラー FEM メッシュ色塗り画像 (filledcurve 使用)

出力ターミナルを postscript eps color として,plot と filledcurve を用いて,FEM 応力解析結果の主応力値に応じて色分けする図です.この解析では1要素4積分点のものを使っているので,1要素を4分割して各積分点の主応力値の大きさに応じて色分けしています.

ここでは,C 言語によるプログラムと最終的に作成したpng画像を掲示しておきます.eps ファイルは数 MB になりますので png に変換して使用したほうが良いようです.

plot と filledcurves を使う場合は,まず線の色を set style line で指定します.

set style line  1 linetype rgb "#0000ff" linewidth 1
set style line  2 linetype rgb "#0033ff" linewidth 1
set style line  3 linetype rgb "#0066ff" linewidth 1
set style line  4 linetype rgb "#0099ff" linewidth 1
set style line  5 linetype rgb "#00ccff" linewidth 1
set style line  6 linetype rgb "#00ffff" linewidth 1
set style line  7 linetype rgb "#ffff00" linewidth 1
set style line  8 linetype rgb "#ffcc00" linewidth 1
set style line  9 linetype rgb "#ff9900" linewidth 1
set style line 10 linetype rgb "#ff6600" linewidth 1
set style line 11 linetype rgb "#ff3300" linewidth 1
set style line 12 linetype rgb "#ff0000" linewidth 1

plot 命令の中で filledcurves linestyle を指定することにより,定めた色で囲まれた領域を塗りつぶします.この場合の座標指定も5点の閉じた領域を指定しています.

plot ¥
"-" with filledcurves linestyle 1 notitle,¥
"-" with filledcurves linestyle 1 notitle,¥
"-" with filledcurves linestyle 1 notitle,¥
・・・・・
8.000 0.000
8.050 0.000
8.038 0.318
7.988 0.314
8.000 0.000
e
8.100 0.000
8.088 0.318
8.038 0.318
8.050 0.000
8.100 0.000
e
8.075 0.636
8.025 0.632
8.038 0.318
8.088 0.318
8.075 0.636
e
・・・・・

png 画像作成のバッチファイルの中身は以下の通りです.ImageMagick で余白を削除 (trim) しながら density 300 で eps を png に変換しその後 50 ピクセルの余白をつけて仕上げています.余白をつける時点で透過 png が指定した背景色の画像に変換されます.

gcc -o gccMESH4nod-fc.exe gccMESH4nod-fc.c
gccMESH4nod-fc out4rand19h.csv fig_fc_test2.eps
gccMESH4nod-fc out_test.csv fig_fc_test3.eps
convert -trim -density 300 fig_fc_test2.eps fig_fc_test2.png
convert -trim -density 300 fig_fc_test3.eps fig_fc_test3.png
convert fig_fc_test2.png -bordercolor "#ffffff" -border 50x50 fig_fc_zw_test2.png
convert fig_fc_test3.png -bordercolor "#ffffff" -border 50x50 fig_fc_zw_test3.png
ファイル名概要
コマンド記述ファイル作成およびgnuplot起動用Cプログラム
png画像ファイル
png画像ファイル


eps カラー FEM 節点値の3次元プロット[1] (splot 使用)

出力ターミナルを postscript eps color として,splot を用いて,FEM 熱伝導解析結果の節点温度をプロットする図です.熱伝導や浸透流解析では節点値が求まるので各要素の4節点の値を連続的に表示してみました.

コマンド記述ファイルは以下の通り単純です.

reset
set terminal postscript eps enhanced color font "Arial" 12
set output "fig_CPT_splot.eps"
#
set size ratio -1
#
set xrange [0.000:50.000]
set yrange [0.000:50.000]
set zrange [0.000:19.999]
set ticslevel 0
#
splot "data_temp_ondo.prn" with lines notitle
#
quit

splot で読み込むファイル (ここでは data_temp_ondo.prn) は以下の構成です.要素を構成する4節点のx座標,y座標,温度値を(x,y,z)の組として,閉じた四辺形になるよう入力し,2行の空白行をいれています.空白1行ではうまくいきませんでした.

8.000 0.000 0.000
8.100 0.000 0.358
8.075 0.636 0.358
7.975 0.628 0.000
8.000 0.000 0.000


7.975 0.628 0.000
8.075 0.636 0.358
8.000 1.267 0.358
7.902 1.251 0.000
7.975 0.628 0.000


7.902 1.251 0.000
8.000 1.267 0.358
7.876 1.891 0.358
7.779 1.868 0.000
7.902 1.251 0.000


・・・・・

png 画像作成のバッチファイルの中身は以下の通りです.ImageMagick で余白を削除 (trim) しながら density 300 で eps を png に変換しその後 50 ピクセルの余白をつけて仕上げています.余白をつける時点で透過 png が指定した背景色の画像に変換されます. eps ファイルの大きさは69kBですので,そのままTeXに張り込んでも問題ないと思います.

gcc -o gccONDO4-splot.exe gccONDO4-splot.c
gccONDO4-splot out_CPT_ondo.csv fig_CPT_splot.eps
convert -trim -density 300 fig_CPT_splot.eps fig_CPT_splot.png
convert fig_CPT_splot.png -bordercolor "#ffffff" -border 50x50 fig_zw_CPT_splot.png
ファイル名概要
コマンド記述ファイル作成およびgnuplot起動用Cプログラム
プロット用データファイル
png画像ファイル


eps カラー FEM 節点値の3次元プロット[2] (splot 使用)

[1] であつかった図は,ただプロットしたのみで結果の良否を視覚的に見るだけにしか使えません. 軸や凡例,要素別の色塗りなど,少し実用的な図を作ってみました.

コマンド記述ファイルは以下の通りです.(一部省略)

reset
set terminal postscript eps enhanced color font "Arial" 12
set output "fig_ondo_splot_dbl.eps"
#
set size ratio -1
#
set xrange [0.000:50.000]
set yrange [0.000:50.000]
set zrange [0.000:19.999]
#
# ラベル指定.
# y軸ラベルは左に-3,上に1移動.
# z軸ラベルは右に5移動し90℃回転./Symbolを用いて(℃)を表示
set xlabel "x-direction (m)"
set ylabel "y-direction (m)" -3,1
set zlabel "Temperature ({/Symbol \260}C)" 5,0 rotate by 90
#
# set object polygon で要素の(x,y)座標と節点温度値(z)を3次元で指定し,色を塗る.
set object 1 polygon from 4.000,0.000,0.000 to 4.100,0.000,0.459 to 4.087,0.322,0.459 to 3.988,0.314,0.000 to 4.000,0.000,0.000
set object 1 fillcolor rgb "#FF00CC" fillstyle solid 0.2
set object 2 polygon from 3.988,0.314,0.000 to 4.087,0.322,0.459 to 4.050,0.641,0.459 to 3.951,0.626,0.000 to 3.988,0.314,0.000
set object 2 fillcolor rgb "#FF00CC" fillstyle solid 0.2

・・・660要素分繰り返し・・・

set object 660 polygon from 3.727,47.354,10.001 to 3.923,49.846,10.001 to 0.000,50.000,10.001 to 0.000,47.500,10.001 to 3.727,47.354,10.001
set object 660 fillcolor rgb "#FFFFE0" fillstyle solid 0.5
#
# x-y平面上に凡例用の四辺形を描画
set object 661 polygon from 5.000,8.750 to 10.000,8.750 to 10.000,11.250 to 5.000,11.250 to 5.000,8.750
set object 661 fillcolor rgb "#FFFFE0" fillstyle solid 0.5 border lt 1 lw 0.2
set object 662 polygon from 5.000,13.750 to 10.000,13.750 to 10.000,16.250 to 5.000,16.250 to 5.000,13.750
set object 662 fillcolor rgb "#FF00CC" fillstyle solid 0.2 border lt 1 lw 0.2
#
# x-y平面上に凡例用のラベルを描画
set label "Bed rock" at first 11.25,first 10 left
set label "Concrete" at first 11.25,first 15 left
#
set ticslevel 0
#
# splotコマンドで赤いメッシュをかぶせる
splot "data_temp_ondo.prn" with lines lt 1 lw 0.5 notitle
#
quit
ファイル名概要
png画像ファイル


eps その他説明図作成事例

設計計算書などに載せる簡単な説明図の作成事例です. いずれも,eps 出力画像を,ImageMagick を用いた以下のコマンドで png 画像化しています.

mogrify -trim -density 300 -bordercolor "#ffffff" -border 50x50 -format png *.eps

このような図を作成する場合,寸法線や,荷重を示す記号など,矢印の使い方がポイントになります. 色々な矢印の定義方法は, 米澤 進吾さんのページ に詳しい解説があります.

矩形フーチングに作用する荷重の説明図

ファイル名概要
コマンド記述ファイル
png画像ファイル

基礎杭の配置平面図

ファイル名概要
コマンド記述ファイル
png画像ファイル

円形鉄筋コンクリート断面

鉄筋は,filledcurves を用い黒く塗りつぶしています.

ファイル名概要
コマンド記述ファイル
png画像ファイル

Spangler のモデル図

土中埋設管の設計に用いられるSpanglerの式のモデル図を作成してみました.

ファイル名概要
コマンド記述ファイル作成用awkスクリプト
コマンド記述ファイル
png画像ファイル


inserted by FC2 system