[更新情報]

▽Go to footer


WANtaroHP(gnuplot 編) 目次
------
VBC#gcc
VBC#gcc
VBC#gcc
VBC#--

01:dvipdfmx で作成した pdf で png が薄い!(pdf)

概要(プログラム:vb-dvipdfmx)

入出力事例

ファイル名概要
出力比較事例


02:gnuplotを用いた説明図作成(圧力水路断面設定)

概要(プログラム:vbTUNNEL-gnuplot, vcsTUNNEL-gnuplot, gccTUNNEL-gnuplot)

出力ターミナルを postscript eps として,普通軸と極座標表示を multiplot で重ね合わせた図です. 設計図とまでは行きませんが,報告書の説明図としては使えると思います. このような図は Wo*d や Exc*l という訳には行かないでしょう.

ここでは,gnuplot 出力の eps 画像の BoundingBox を修正後,ImageMagik で png 画像にしています.TeX の文書であれば eps が良いのですが,PowerPoint や Wo*d に貼り付けざるを得ない場合もあり,png 化を試したものです. ImageMagick convert の -density の値は 300x300 程度以上の方が良さそうです.

使用サブルーチン

サブルーチン一覧
Sub・関数名 使用 機能
main_part (C : main) VB・C#・C 制御部
GPL VB・C# gnuplot 起動+ eps ファイル作成
BBOX VB・C# gnuplot が作成した eps ファイルの BoundingBox 修正
IMCVT VB・C# ImageMagick:convert で eps を 透過 png 画像に変換
IMCMP VB・C# ImageMagick:convert で白背景と透過 png 画像を合成
VIEWPNG VB・C# png 画像の画面表示
CAL_AREA (function) VB・C#・C 断面積計算
CAL_LENG (function) VB・C#・C 周長計算
CAL_THETA (function) VB・C#・C 角度計算 (二分法)
CAL_F (function) VB・C#・C 角度計算のための関数
WGPL VB・C#・C gnuplot コマンド記述ファイル書き出し
AGR VB・C#・C 骨材記号書き出し
CAL_XY VB・C#・C 骨材記号乱数座標試算
CAL_XYARRAY VB・C#・C 骨材記号座標確定(隣接座標と一定距離を確保)
WGPLmodel VB・C#・C モデル用 gnuplot コマンド記述ファイル書き出し

VB および C# プログラム

5
gpl_eps_Tmd.txt,fig_eps_Tmd.eps,-1, 6000, 2000, 1000, 7000, 500, 500, 130, 70, 350, 260
gpl_eps_HT1.txt,fig_eps_HT1.eps, 0, 8200,  550,    0, 6000, 100, 100, 140, 70, 350, 300
gpl_eps_HT2.txt,fig_eps_HT2.eps, 0, 6100,  550,    0, 5000, 100, 100, 140, 70, 350, 300
gpl_eps_PS1.txt,fig_eps_PS1.eps, 1, 5400,  600,  300, 5000, 100, 100, 140, 70, 350, 300
gpl_eps_PS2.txt,fig_eps_PS2.eps, 1, 3000,  500,  100, 3000, 100, 100, 140, 70, 350, 300

1行目は,作図するケース数,2行目以降はそれぞれ以下のデータです.鉄管厚はその他寸法に比べて小さいため,厚さ50mmで固定して描画しています.

gpl_eps_*.txt,fig_eps_*.eps,ksp,D0,Tc,Tx,W,ts,tp,BBx1,BBy1,BBx2,BBy2
入力データ記載例
gpl_eps_*.txtgnuplotのコマンド記述ファイル名
fig_eps_*.epsgnuplotの出力epsファイル名
ksp -1:モデル作図,0:鉄管無し,1:鉄管有り
D0 トンネル内径
Tc 覆工厚
Tx 覆工厚インバート部増分
W インバート幅
ts 吹付厚
tp 設計掘削線から支払線までの厚さ
BBx1 eps切取範囲左下x座標
BBy1 eps切取範囲左下y座標
BBx2 eps切取範囲右上x座標
BBy2 eps切取範囲右上y座標

C プログラム

一括処理バッチファイル

C では,下に示すバッチファイルで gnuplot と ImageMagick を実行しています. ImageMagic の コマンド identify は作成した png 画像の情報を表示させています.

gcc -o gccTUNNEL-gnuplot.exe gccTUNNEL-gnuplot.c
gcc -o gccBBOX.exe gccBBOX.c
rem
gccTUNNEL-gnuplot gpl_eps_Tmd.txt fig_eps_Tmd.eps -1 6000 2000 1000 7000 500 500
gccTUNNEL-gnuplot gpl_eps_HT1.txt fig_eps_HT1.eps 0 8200 550 0 6000 100 100
gccTUNNEL-gnuplot gpl_eps_HT2.txt fig_eps_HT2.eps 0 6100 550 0 5000 100 100
gccTUNNEL-gnuplot gpl_eps_PS1.txt fig_eps_PS1.eps 1 5400 600 300 5000 100 100
gccTUNNEL-gnuplot gpl_eps_PS2.txt fig_eps_PS2.eps 1 3000 500 100 3000 100 100
rem
gnuplot "gpl_eps_Tmd.txt"
gnuplot "gpl_eps_HT1.txt"
gnuplot "gpl_eps_HT2.txt"
gnuplot "gpl_eps_PS1.txt"
gnuplot "gpl_eps_PS2.txt"
rem
gccBBOX fig_eps_Tmd.eps fig_eps_z_Tmd.eps 130 70 350 260
gccBBOX fig_eps_HT1.eps fig_eps_z_HT1.eps 140 70 350 300
gccBBOX fig_eps_HT2.eps fig_eps_z_HT2.eps 140 70 350 300
gccBBOX fig_eps_PS1.eps fig_eps_z_PS1.eps 140 70 350 300
gccBBOX fig_eps_PS2.eps fig_eps_z_PS2.eps 140 70 350 300
rem
convert -density 300 fig_eps_z_Tmd.eps fig_png_z_Tmd.png
convert -density 300 fig_eps_z_HT1.eps fig_png_z_HT1.png
convert -density 300 fig_eps_z_HT2.eps fig_png_z_HT2.png
convert -density 300 fig_eps_z_PS1.eps fig_png_z_PS1.png
convert -density 300 fig_eps_z_PS2.eps fig_png_z_PS2.png
rem
identify fig_png_z_Tmd.png
identify fig_png_z_HT1.png
identify fig_png_z_HT2.png
identify fig_png_z_PS1.png
identify fig_png_z_PS2.png
rem
convert -size 917x792 xc:"#FFFFFF" base.png
convert base.png fig_png_z_Tmd.png -composite fig_png_zw_Tmd.png
convert -size 875x958 xc:"#FFFFFF" base.png
convert base.png fig_png_z_HT1.png -composite fig_png_zw_HT1.png
convert base.png fig_png_z_HT2.png -composite fig_png_zw_HT2.png
convert base.png fig_png_z_PS1.png -composite fig_png_zw_PS1.png
convert base.png fig_png_z_PS2.png -composite fig_png_zw_PS2.png
gnuplot コマンド記述ファイル作成実行

gnuplotのコマンド記述ファイル作成実行時のパラメータは以下の通りです.

gccTUNNEL-gnuplot gpl_eps_*.txt,fig_eps_*.eps,ksp,D0,Tc,Tx,W,ts,tp
入力データ記載例
gccTUNNEL-gnuplotgnuplotのコマンド記述ファイル名
gpl_eps_*.txt gnuplotのコマンド記述ファイル名
fig_eps_*.eps gnuplotの出力epsファイル名
ksp -1:モデル作図,0:鉄管無し,1:鉄管有り
D0 トンネル内径
Tc 覆工厚
Tx 覆工厚インバート部増分
W インバート幅
ts 吹付厚
tp 設計掘削線から支払線までの厚さ
BoundingBox 書き換え実行

BoundingBox 書き換え実行時のパラメータは以下の通りです.

gccBBOX fig_eps_*.eps fig_eps_z_*.eps BBx1 BBy1 BBx2 BBy2
入力データ記載例
gccBBOX eps ファイルのBoundingBox書き換え実行プログラム
fig_eps_*.eps gnuplotがはき出した元epsファイル名
fig_eps_z_*.eps指定範囲切り取り後のepsファイル名
BBx1 eps切取範囲左下x座標
BBy1 eps切取範囲左下y座標
BBx2 eps切取範囲右上x座標
BBy2 eps切取範囲右上y座標

プログラム BBox のCプログラムコード (gccBBOX.c) は,以下の通りです.epsファイルの6行目の数値を変更するのみの内容です.


/*---------------------------------------------------------------------------*/
/* gccBBOX.c                                                                 */
/*---------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*---------------------------------------------------------------------------*/
int main(int argc,char *argv[])
{
    int i;
    char fnameR[50]; /*入力ファイル名*/
    char fnameW[50]; /*出力ファイル名*/
    FILE *fin,*fout;
    char dat[256];
    char str[100];

    strcpy(fnameR,argv[1]);
    strcpy(fnameW,argv[2]);

    strcpy(str,"%%BoundingBox:");
    strcat(str," ");
    strcat(str,argv[3]);
    strcat(str," ");
    strcat(str,argv[4]);
    strcat(str," ");
    strcat(str,argv[5]);
    strcat(str," ");
    strcat(str,argv[6]);
    strcat(str,"\n");

    /* %%BoundingBox: 50 50 410 302  元のBoundingBox */

    fin=fopen(fnameR,"r");
    fout=fopen(fnameW,"w");

    i=0;
    while(fgets(dat,sizeof dat,fin)!=NULL){
        i=i+1;
        if(i==6)strcpy(dat,str);
        fprintf(fout,"%s",dat);
    }
    fclose(fout);
    fclose(fin);

    return 0;
}
/*---------------------------------------------------------------------------*/

使用コントロール

ToolStrip1(Button1),OpenFileDialog1,SaveFiledialog1,StatusStrip1(ToolStripStatusLabel1),PictureBox1

プログラムリスト

VB codeC# codegcc codeRemarks
プログラムリスト

入出力事例

ファイル名概要
入力データファイル
gnuplotコマンド記述ファイル(モデル)
gnuplotコマンド記述ファイル(圧力水路1)
gnuplotコマンド記述ファイル(圧力水路2)
gnuplotコマンド記述ファイル(水圧鉄管1)
gnuplotコマンド記述ファイル(水圧鉄管2)
出力透過png画像ファイル(モデル)
出力透過png画像ファイル(圧力水路1)
出力透過png画像ファイル(圧力水路2)
出力透過png画像ファイル(水圧鉄管1)
出力透過png画像ファイル(水圧鉄管2)
出力白背景png画像ファイル(モデル)
出力白背景png画像ファイル(圧力水路1)
出力白背景png画像ファイル(圧力水路2)
出力白背景png画像ファイル(水圧鉄管1)
出力白背景png画像ファイル(水圧鉄管2)
pdfファイル


03:gnuplotを用いた説明図作成(2心円NATMトンネル断面設定)

概要(プログラム:vbT2CNATM-gnuplot, vcsT2CNATM-gnuplot, gccT2CNATM-gnuplot)

出力ターミナルを postscript eps として,普通軸と媒介変数表示を multiplot で重ね合わせた図です. 設計図とまでは行きませんが,報告書の説明図としては使えると思います. このような図は Wo*d や Exc*l という訳には行かないでしょう.

使用サブルーチン

サブルーチン一覧
Sub・関数名 使用 機能
main_part (C : main) VB・C#・C 制御部
GPL VB・C# gnuplot 起動+ eps ファイル作成
BBOX VB・C# gnuplot が作成した eps ファイルの BoundingBox 修正
IMCVT VB・C# ImageMagick:convert で eps を 透過 png 画像に変換
IMCMP VB・C# ImageMagick:convert で白背景と透過 png 画像を合成
VIEWPNG VB・C# png 画像の画面表示
WGPL VB・C#・C gnuplot コマンド記述ファイル書き出し

VB および C# プログラム

3
gpl_eps_T2Cmd.txt,fig_eps_T2Cmd.eps, -1, 6000, 5000, 5000, 400, 300, 300,150,70,340,240
gpl_eps_NATM1.txt,fig_eps_NATM1.eps,  0, 7600, 5700, 7200, 300, 200, 100,150,70,340,270
gpl_eps_NATM2.txt,fig_eps_NATM2.eps,  0, 5000, 5200, 4350, 300, 200, 100,150,70,340,270

1行目は,作図するケース数,2行目以降はそれぞれ以下のデータです.

gpl_eps_*.txt,fig_eps_*.eps,ksp,B,H,W,Ti,ts,tp,BBx1,BBy1,BBx2,BBy2
入力データ記載例
gpl_eps_*.txtgnuplotのコマンド記述ファイル名
fig_eps_*.epsgnuplotの出力epsファイル名
ksp -1:モデル作図,0:NATMトンネル
B 内空幅
H 内空高
W インバート内空幅
Ti インバート厚
ts 吹付厚
tp 設計掘削線から支払線までの厚さ
BBx1 eps切取範囲左下x座標
BBy1 eps切取範囲左下y座標
BBx2 eps切取範囲右上x座標
BBy2 eps切取範囲右上y座標

C プログラム

一括処理バッチファイル

C では,下に示すバッチファイルで gnuplot と ImageMagick を実行しています. ImageMagic の コマンド identify は作成した png 画像の情報を表示させています.

gcc -o gccT2CNATM-gnuplot.exe gccT2CNATM-gnuplot.c
gcc -o gccBBOX.exe gccBBOX.c
rem
gccT2CNATM-gnuplot gpl_eps_T2Cmd.txt fig_eps_T2Cmd.eps -1 6000 5000 5000 400 300 300
gccT2CNATM-gnuplot gpl_eps_NATM1.txt fig_eps_NATM1.eps  0 7600 5700 7200 300 200 100
gccT2CNATM-gnuplot gpl_eps_NATM2.txt fig_eps_NATM2.eps  0 5000 5200 4350 300 200 100
rem
gnuplot "gpl_eps_T2Cmd.txt"
gnuplot "gpl_eps_NATM1.txt"
gnuplot "gpl_eps_NATM2.txt"
rem
gccBBOX fig_eps_T2Cmd.eps fig_eps_z_T2Cmd.eps 150 70 340 240
gccBBOX fig_eps_NATM1.eps fig_eps_z_NATM1.eps 150 70 340 270
gccBBOX fig_eps_NATM2.eps fig_eps_z_NATM2.eps 150 70 340 270
rem
convert -density 300 fig_eps_z_T2Cmd.eps fig_png_z_T2Cmd.png
convert -density 300 fig_eps_z_NATM1.eps fig_png_z_NATM1.png
convert -density 300 fig_eps_z_NATM2.eps fig_png_z_NATM2.png
rem
identify fig_png_z_T2Cmd.png
identify fig_png_z_NATM1.png
identify fig_png_z_NATM2.png
rem
convert -size 792x708 xc:"#FFFFFF" base.png
convert base.png fig_png_z_T2Cmd.png -composite fig_png_zw_T2Cmd.png
convert -size 792x833 xc:"#FFFFFF" base.png
convert base.png fig_png_z_NATM1.png -composite fig_png_zw_NATM1.png
convert base.png fig_png_z_NATM2.png -composite fig_png_zw_NATM2.png
gnuplotコマンド記述ファイル作成実行

gnuplotのコマンド記述ファイル作成実行時のパラメータは以下の通りです.

gccTUNNEL-gnuplot gpl_eps_*.txt,fig_eps_*.eps,ksp,B,H,W,Ti,ts,tp
入力データ記載例
gccTUNNEL-gnuplotgnuplotのコマンド記述ファイル名
gpl_eps_*.txt gnuplotのコマンド記述ファイル名
fig_eps_*.eps gnuplotの出力epsファイル名
ksp -1:モデル作図,0:NATMトンネル
B 内空幅
H 内空高
W インバート内空幅
Ti インバート厚
ts 吹付厚
tp 設計掘削線から支払線までの厚さ
BoundingBox 書き換え実行

BoundingBox 書き換え実行時のパラメータは圧力水路の断面設定プログラムと同じです.

gccBBOX.c のソースコードはこちらです.

使用コントロール

ToolStrip1(Button1),OpenFileDialog1,SaveFiledialog1,StatusStrip1(ToolStripStatusLabel1),PictureBox1

プログラムリスト

VB codeC# codegcc codeRemarks
プログラムリスト

入出力事例

ファイル名概要
入力データファイル
gnuplotコマンド記述ファイル(モデル)
gnuplotコマンド記述ファイル(事例1)
gnuplotコマンド記述ファイル(事例2)
出力透過png画像ファイル(モデル)
出力透過png画像ファイル(事例1)
出力透過png画像ファイル(事例2)
出力白背景png画像ファイル(モデル)
出力白背景png画像ファイル(事例1)
出力白背景png画像ファイル(事例2)
pdfファイル


04:gnuplotを用いたグラフ作成(鉄管大型化の推移)

概要(プログラム:vbPSHD-gnuplot, vcsPSHD-gnuplot, gccPSHD-gnuplot)

01 | fig_eps_PSHD.eps,#dummy
02 | Year of the first comercial operation,Design Head x Internal Diameter (m x m),#dummy
03 | 1955,2010,5
04 | 0,6000,500
05 | 47
06 | #PS_name,Type,Year,H*D,Class,Symbol,Steel,name,Type
07 | Sakuma          , C,1956, 667,400MPa,r,SM41W  , 佐久間     , 一般水力 
08 | Tagokura        , C,1958, 677,400MPa,b,SM41W  , 田子倉     , 一般水力 
・・・・・
発電所名記載位置の記載例
tプロットの上
bプロットの下
rプロットの左(名前の右端をプロットに合わせる)
lプロットの右(名前の左端をプロットに合わせる)
0描画しない

使用コントロール

ToolStrip1(Button1),OpenFileDialog1,SaveFiledialog1,StatusStrip1(ToolStripStatusLabel1),PictureBox1

プログラムリスト

VB codeC# codegcc codeRemarks
プログラムリスト

入出力事例

ファイル名概要
入力データファイル
gnuplotコマンド記述ファイル
出力透過png画像ファイル
出力白背景png画像ファイル


05:gnuplotを用いた日本語グラフ作成(鉄管大型化の推移)

概要(プログラム:vbPSHD_J-gnuplot, vcsPSHD_J-gnuplot)

使用コントロール

ToolStrip1(Button1,Label1.ComboBox1),OpenFileDialog1,SaveFiledialog1,StatusStrip1(ToolStripStatusLabel1),PictureBox1

プログラムリスト

VB codeC# codegcc codeRemarks
----プログラムリスト

入出力事例

ファイル名概要
入力データファイル(シフトJIS)
入力データファイル(シフトJIS)
出力白背景png画像ファイル


inserted by FC2 system