Presentation is loading. Please wait.

Presentation is loading. Please wait.

グラフ描画ソフト gnuplot を体験してみよう

Similar presentations


Presentation on theme: "グラフ描画ソフト gnuplot を体験してみよう"— Presentation transcript:

1 グラフ描画ソフト gnuplot を体験してみよう
Gnuplotによる3-Dグラフの描画 Gnuplotによる3-Dデータのプロット 今日のポイント グラフ描画ソフト gnuplot を体験してみよう

2 Gnuplot とは… グラフ描画専用のフリーウェア Windows版の名称は wgnuplot インストールはフォルダごとコピーするだけ
専用のコマンドウインドウにより、おもにコマンドで操作 日本語のオンラインヘルプやWebでの解説ページも充実

3 Gnuplotの起動と終了 gnuplot の起動は [ スタート ] →
[すべてのプログラム(P)>] → [gnuplot] を<クリック> [ スタート ] → [すべてのプログラム(P)>] → [gnuplot] を   <右クリック>して、[送る(N)] より [ デスクトップ(ショートカットを作成)]を選び、 ショートカットアイコン を作成 ショートカットアイコン を<ダブルクリック>すると、gnuplot が 起動 左上の [File] → [Exit] または、右上の [x] ボタンにより、終了 送る(N) File Exit X

4 フォントが小さい場合 gnuplot のウィンドウを <右クリック> し、3つめの[ Choose Font... ] を選択し、フォントウィンドウを開く フォント名(F):で [Terminal] を選択し、サイズ(S):で [14] を選んでおく [ OK ] ボタンを押してフォントウィンドウを閉じる 再び、gnuplot のウィンドウを <右クリック> し、一番下の [Update wgnuplot.ini] を選んで設定を保存 Choose Font… Terminal 14 Update wgnuplot.ini

5 練習1 関数グラフを描いてみよう gnuplot> plot 2*x*x+3, x**3-75*x べき乗 プロンプト

6 グラフ描画のためのTips(1) X軸ラベル、Y軸ラベルは 凡例(Key)を変えるには プロットの線を「線と点」に変えるには
gnuplot> set xlabel "x" gnuplot> set ylabel "y" gnuplot> replot 凡例(Key)を変えるには gnuplot> plot 2*x*x+3 title "y=2x^2+3", \ > x**3-75*x title "y=x^3-75x" プロットの線を「線と点」に変えるには gnuplot> plot 2*x*x+3 with linespoints, \ > x**3-75*x with linespoints 矢印キー↑で 前のコマンド を呼び出し、 編集できる Axes メニュー [Replot] ボタン 改行して 続ける記号 Plot メニュー

7 Axes メニュー → Logscale xyz
グラフ描画のためのTips(2) X軸範囲、Y軸範囲の指定は gnuplot> set xrange [-15:15] gnuplot> set yrange [-2000:2000] gnuplot> replot 目盛線をつけるには gnuplot> set grid 対数グラフにするには gnuplot> set logscale xy set コマンドを解除するには gnuplot> unset grid Axes メニュー Chart メニュー → Grid on Axes メニュー → Logscale xyz Chart メニュー → Grid off

8 練習2 対数グラフを描いてみよう gnuplot> plot 1/(1+x*x) set logscale xy
練習2 対数グラフを描いてみよう gnuplot> plot 1/(1+x*x) set logscale xy set xrange [0.1:100] set yrange [0.0001:1] set xlabel "x" set ylabel "y" set grid replot Lorentz関数

9 sinc2(x)の対数グラフ gnuplot> sinc(x) = sin(pi*x)/(pi*x) plot sinc(x)**2
sinc2(x) = (sin px/px)2 sinc2(x)の対数グラフ オプション gnuplot> sinc(x) = sin(pi*x)/(pi*x) plot sinc(x)**2 set logscale xy set xrange [0.1:100] set yrange [0.0001:1] set xlabel "x" set ylabel "y" set grid replot 関数定義

10 gnuplot> set parametric plot cos(5*t), sin(7*t) set trange [-pi:pi]
リサージュ図形 オプション gnuplot> set parametric plot cos(5*t), sin(7*t) set trange [-pi:pi] set grid unset key replot 媒介変数 t 凡例なし (No Key)

11 練習3 データのプロット gnuplot> plot 'Z:\nyumon2\q14.csv' with lines
練習3 データのプロット gnuplot> plot 'Z:\nyumon2\q14.csv' with lines 凡例を書き換える場合 gnuplot> plot 'Z:\nyumon2\q14.csv' \ > title "y=2x^2+3" with lines さらに線を「線と点」にかえる gnuplot> plot 'Z:\nyumon2\q14.csv' \ > title "y=2x^2+3" with linespoints

12 複数データのプロット gnuplot> plot 'Z:\nyumon2\q14_s.csv' with lines, \
オプション gnuplot> plot 'Z:\nyumon2\q14_s.csv' with lines, \ > 'Z:\nyumon2\q14_s.csv' using 1:3 with lines 1列目と3列目でプロット 凡例を書き換える場合 gnuplot> plot 'Z:\nyumon2\q14_s.csv' \ > title "2x^2+3" with lines, \ > 'Z:\nyumon2\q14_s.csv' using 1:3 \ > title "x^3-75x" with lines

13 練習4 3-Dグラフの描画 gnuplot> R(x,y)=sqrt(x*x+y*y)
gauss(x,y)=exp(-R(x,y)**2) splot gauss(x,y) set xrange [-2:2] set yrange [-2:2] set isosample 40,40 set xlabel "x" set ylabel "y" replot 関数定義 default の10 では足りない

14 練習5 等高線の描画 gnuplot> R(x,y)=sqrt(x*x+y*y) gauss(x,y)=exp(-R(x,y)**2)
練習5 等高線の描画 gnuplot> R(x,y)=sqrt(x*x+y*y) gauss(x,y)=exp(-R(x,y)**2) splot gauss(x,y) set xrange [-2:2] set yrange [-2:2] set contour base unset surface set view 0,0 set cntrparam levels 10 set xlabel "x" set ylabel "y" replot

15 3-D/等高線グラフのためのTips 陰線処理 gnuplot> set hidden3d カラーマップ表示
gnuplot> set pm3d カラーパレットの指定 gnuplot> set palette gray gnuplot> set palette color

16 Milk drop オプション Milkdrop(x,y) = exp( exp( -R(x,y) ) * ( exp( cos( R(x,y) )**20 ) + 8*sin( R(x,y) )**20 + 2*sin( 2*R(x,y) )**8 ) )

17 3-Dプロット用のデータ構造 Excelとは異なり、2-Dプロット用データを縦に並べることで3-Dプロット用データとしている。

18 練習6 3-Dデータのプロット まず、 f (x, y)=exp(-(x2 + y2)), -2 ≦ x, y ≦ 2
のgnuplot用データを作成し、gauss2.dat に保存する。 つぎに、gnuplotにより gauss2.dat の3-D  プロットを描く。

19 プログラム例 (gauss2g.c) #include <stdio.h> #include <math.h>
int main(void) { int i, j, n=20; double x, y, z; for (j = -n; j <= n; j++) { y = 0.1*j; for (i = -n; i < n; i++) { x = 0.1*i; z = exp(-(x*x+y*y)); printf("% .2f, % .2f, % .3f\n",x,y,z); } printf("\n"); return 0;

20 実行手順 Z:\nyumon2>cl gauss2g.c ...
Z:\nyumon2>gauss2g > gauss2.dat このあと、gnuplot を起動し、 gnuplot> splot 'Z:\nyumon2\gauss2.dat' \ > with lines

21 スキルアップタイム:(gauss22g.c) 最初に f (r) = exp(-r2) | cos(2pr) |
 のデータを出力したあと、2回改行し、続けて    f (r) = exp(-r2) + 1  を出力するプログラムを作成し、gauss22.dat に保存  せよ。ただし、r2 = x2+y2, -2 ≦ x, y ≦ 2. つぎに、gnuplotにより gauss22.dat の3-D  プロットを描け。 絶対値は fabs( )

22 スキルアップタイムの出力例

23 ヘルプ、その他 Help メニュー : コマンドの詳しい使い方など コマンド、オプションは誤解されない範囲で短く省略可
plot → p, splot → sp, replot → rep with → w, lines → l, title → t, using → u xrange → xr, xlabel → xl, logscale → logs palette → pal, hidden3d → hid など デモは C:\Gnuplot\demo\all.dem

24 faceg.dat の表示 gnuplot> set view 180, 0 unset surface unset xtics
オプション gnuplot> set view 180, 0 unset surface unset xtics unset ytics unset ztics set size square set pm3d set palette gray splot 'Z:\nyumon2\faceg.dat' 真下から見る メッシュを非表示 軸も非表示 正方形にセット グレイスケールで表示 gnuplot 用にデータを並べ替えた faceg.dat を3D表示

25 face.dat → faceg.dat の変換 face4g.c #include <stdio.h>
オプション #include <stdio.h> #include <string.h> int main(void) { int i; char *p,s[520]; while (fgets(s,520,stdin)!=NULL) { p=strtok(s," "); if (p && (*p!=' ')) printf("%s\n", p); for (i=1;i<128;i++) { p=strtok(NULL," "); } printf("\n"); return 0; face4g.c

26 face.dat → faceg.dat の変換 Z:\nyumon2>cl face4g.c
オプション Z:\nyumon2>cl face4g.c Z:\nyumon2>face4g < face.dat > faceg.dat


Download ppt "グラフ描画ソフト gnuplot を体験してみよう"

Similar presentations


Ads by Google