Michiko FUJII's home page

WIPの使い方 (よく使う部分のみ)
update 2009/11/19 インストールについて更新。

Home
目次
はじめに データファイルから図を作る 線を引く・文字を書く 詳しい使い方はこちら
インストール
.wipinitの設定
WIPの起動/終了
ファイルからコマンドを読む
図をファイルに出力
図の大きさを指定
ビューポートの指定
x, yの値の範囲
枠を描く
目盛の幅を指定
軸のラベルを書く
フォントの設定は右欄
ファイルからデータを読む
データを線でつなぐ
データ点を打つ
線種を変更
線の太さを変更
色を変更
シンボルを変更
対数の場合のまとめ
書きたい場所へ移動
直線をひく
点を打つ
文字を書く
フォントの変更
フォントサイズの変更
ギリシャ文字
途中でフォントを変更
上付き、下付き文字
特殊記号(×,太陽)
WIPマニュアル (英語)
コマンド一覧(英語)
PGPLOT サブルーチン(日本語)
サンプル発展編・マクロ
ファイルを読み込み図を作る マクロを定義する
マクロを使って関数を定義


はじめに
インストール
PGPLOTのインストール

WIPを使うためには、まずPGPLOTのインストールが必要。

PGPLOT - Linux Wiki -

を参考にすると良い。
最後の方に、WIPのインストールについても書いてある。


Vine 5.0 用メモ
  1. pgplot をコンパイルする時に、Xlib.h がなくて失敗する。
    #apt-get install XOrg-devel
    で、インストールする。(Vine 5.0は少し違う名前だったけど忘れてしまった。それっぽいのをインストール。)

  2. pgplot を使うプログラムをコンパイルする時、f2c がなくてコンパイルできない。
    そういう場合は、-lf2c を -lg2c にするとコンパイルできる。(gfortranを入れる)
    libg2cを探したらこんなところにあったので、リンクは以下のように。
    -I/usr/local/pgplot -L/usr/local/pgplot -lcpgplot -lpgplot -L/usr/X11R6/lib -lX11 -L/usr/lib/gcc-lib/x86_64-vine-linux/3.3.6 -lg2c -lm
    でコンパイルできる。


WIPのインストール
(2009/11/19 更新)

WIPのホームページからダウンロード。

The WIP Home Page

tar czvf wip2p3.tar.gz
で解凍。 wip というディレクトリができる。
cd wip/
makewip というスクリプトがある。中を見ると、オプションについて説明が書いてある。
上記のページを参考に、f77ではなく、g77を使うようにする。(gfortranが入ってなければインストール。)
ln -s /usr/bin/g77 /usr/local/bin/f77
これだけだとコンパイルできないので(Vine 3.2, 5.0)、
makewip の中の lf2c という部分を lg2c に書き換える。
./makewip -pgplot /usr/local/pgplot -lib /usr/local/lib -bin /usr/local/bin -xlib /usr/X11R6/lib
でコンパイルできた。

Vine 3.2 用メモ
  1. pgplot をコンパイルする時に、Xlib.h がなくて失敗する。
    #apt-get install XOrg-devel
    で、インストールする。(Vine 5.0は少し違う名前だったけど忘れてしまった。それっぽいのをインストール。)

  2. pgplot を使うプログラムをコンパイルする時、f2c がなくてコンパイルできない。
    そういう場合は、-lf2c を -lg2c にするとコンパイルできる。
    -I/usr/local/pgplot -L/usr/local/pgplot -lcpgplot -lpgplot -L/usr/X11R6/lib -lX11 -lg2c -lm
    でコンパイルできるはず。

  3. WIP をコンパイルする時(makewip実行時)にも同様のことが起こる。
    makewip というファイルの中の lf2c を lg2c に書き換えるとコンパイルできるようになる。


あとは、PGPLOT - Linux Wiki -に書いてある通りでインストールできる。
.wipinitの設定
ホームディレクトリに .wipinit というファイルを作る。
その中に
set maxarray 100000
とか書いておく。

この数字の数だけしかデータを読み込めない。
WIPの起動/終了
WIPの起動

コマンドラインで wip と入力。
Setting up default device [/XWINDOW]
Welcome to WIP Version: 2.3 22jan98

WIP>
と表示され、PGPLOTが立ち上がる。


WIPの終了
WIP> end
と入力。
ファイルからコマンドを読み込む
コマンドを全て書いたファイルを用意し、読み込ませることができる。
このファイルを編集し、図を修正していくと便利。

サンプル
paper 4 1
viewport 0.2 0.9 0.2 0.9  
expand 1.5                
font 2                    
limits 0 10 0 10         
box bcnst bcnst
xlabel x
ylabel y
move 1 8
label This is a sample.
move 0 0
draw 10 10
を、 sample というファイルに書いておく。

起動時に、
$ wip sample
とすると、ファイルが読み込まれる。

できる図はこんなかんじ。



ファイルを編集して再度表示したい場合

ファイルを編集してから、
WIP> input sample
と入力すると、変更が反映される。
図をファイルに出力
WIP起動時に出力先を指定

先程のサンプルをPostScriptファイルに出力する場合、コマンドラインで、
$ wip sample -d sample.ps/vps
と入力すると、 WIP が起動し、
Setting up default device [sample.ps/vps]
Reading commands from [sample]....
Welcome to WIP Version: 2.3 22jan98

WIP> 
と表示されるので、 end で WIP を終了する。


注意事項
  1. PostScriptにした場合、背景が白、線が黒になる。
  2. vps ではなく ps にすると tex に貼った時、図が90度回転する。
  3. カラーで出力したい時は cvps にする。
  4. PGPLOT が出力する PostScript は、BoundingBox がファイルの最後にある。


WIPのコマンドラインで出力先を指定
WIP> device sample.ps/vps
WIP> end
と入力。


出力できるファイルの種類

PostScript以外にも出力できる。(ただし、PGPLOTの設定による。)
ファイル名 / デバイス
で指定。

主なもの
filename/vps    #PostScriptモノクロ
filename/cvps   #PostScriptカラー
filename/gif    #GIF

注:PGPLOTのバグ(?)で、 PNG には出力できない。

サンプル
ファイルを読み込み図を作る
サンプルデータ test.dat

 サンプル sample1.wip
paper 7 0.77                  # 図のサイズを指定
viewport 0.2 0.9 0.2 0.9      # ビューポートの設定
limits 0 0.8 0 6              # x,yの値の範囲

font 2                        # フォントの変更
expand 1.8                    # フォントサイズ変更
box  bcnst bcnst              # 枠を描く
font 3
expand 2.0
xlabel T \fr(Myr)             
ylabel R \fr(pc)              

data test.dat                 # 読み込むデータファイル
xcolumn 1                     # xの値
ycolumn 2                     # yの値
lstyle 1                      # 線種の変更
connect                       # データを線でつなぐ

xcolumn 1
ycolumn 3
lstyle 2
color 5                       # 色の変更
connect

font 2 
expand 1.6

lstyle 1
color 1
move 0.42 5.5                 # 移動
draw 0.5 5.5                  # 線を引く
move 0.52 5.4
label Column 2                

lstyle 2
color 5
move 0.42 5.0
draw 0.5 5.0
move 0.52 4.9
label Column 3
これらを保存し、コマンドラインで、
$ wip sample1.wip
と入力すると、このような図ができる。



以後、この図ができるまでを解説する。

データファイルから図を作る
図の大きさを指定
paper  図の大きさ(inch)  縦横比(縦/横)
(例) paper  7  0.77
図の大きさを決める。
図の形は縦横比で指定。"1"にすると正方形。
ビューポートの指定
viewport  左下   右下   左上   右上
(例) viewport  0.2  0.9  0.2  0.9
paper で決めた大きさの紙の中で、枠を描く位置を指定する。
0〜1 の間で指定。
x, yの値の範囲
limit  xの最小値   xの最大値   yの最小値   yの最大値
(例) limits  0.0  0.8  0.0  6.0
x, yの値の範囲を指定。
枠の最大値、最小値がこの値になる。


対数の場合

軸を対数で取る場合、最大値・最小値は"肩"の値で与える。
例えば、
1000  →   3
0.01  →  -2
枠を描く
box  x軸の引数  y軸の引数
(例1) box  bcnst  bcnst    #普通の軸
(例2) box  bcnstl  bcnstl  #対数の場合
(例3) box bcnst bcnszdoy   #角度・時間の場合
ビューポートの周りに枠を描く。


よく使う引数の説明

b : 枠の底辺(x)または左辺(y)を描く。
c : 枠の上辺(x)または右辺(y)を描く。
n : 軸に数字をふる。
s : 副刻みを描く。
t : 主刻みを描く。
l : 軸を対数にする。
v : y軸の目盛を縦向きに書く(デフォルトは横向き)。
z : 目盛を(日)時分秒で取る(目盛が角度の時に)。
d : 数字に°とか″とかをつける(目盛が角度の時に)。
o : 数字の前に0が入らないようにする(03°→3°)。dを指定した時のみ働く。
y : 目盛に日が入らないようにする(zを指定したときのみ)。

軸を角度にしたい場合の注意:単位を秒にして数字を与えないといけない。例えば、1°のところにプロット点を打ちたければ、3600という数字を与える必要がある。

その他の引数についてはこちら。 PGPLOT サブルーチン解説 PGBOX
目盛の幅を指定
ticksize x軸の目盛の幅 x軸の小目盛の数 y軸の目盛の幅 y軸の小目盛の数
(例) ticksize 0 0 36000 5
x軸は自動、y軸の大きい目盛の間隔は36000(角度の時はこれで10°になる)
目盛の間隔を指定。軸を角度にするとよくお世話になる。

1つめの数字は、大きい目盛(数字が書かれる)の幅、2つめの数字は大きい目盛の間の小目盛の数。(いくつに分けるかなので、書かれる目盛線の数は指定した数字-1。)
0を指定すると自動的に目盛が決められる。

注1:必ずboxの前に書くこと。
注2:一度指定すると後の図全てに適用されるので、続けて別の図を書くときは指定し直すこと。
軸のラベルを書く
xlabel  x軸の名前
ylabel  y軸の名前
(例) xlabel  X
ラベルはビューポートの外に書かれる。
(ビューポートを大きくしすぎると、ラベルが紙面からはみ出す。)


ラベルの位置を自分で決めたい場合はmtextの方が良い。
mtext ラベルの場所 軸からの距離 書く位置 書き始めの位置 書きたい文字列
(例)mtext B 2.0 0.5 0.5 test → 下の軸から2.0離れたところの真ん中に test と書く

ラベルの場所
B : 下の軸
L : 左の軸
T : 上の軸
R : 右の軸

軸からの距離
単位は文字列の基本の大きさ(expandなどと同じ単位)。マイナスにすると軸の内側に書かれる。

書く位置
0だと軸の左端、0.5だと真ん中、1だと右端(横軸の場合)。

書き始めの位置
0.5だと中央揃え、0だと最初の文字が「書く位置」で指定した場所になる。

フォント等の指定についてはこちらを参照。

フォントの変更
フォントサイズの変更
ギリシャ文字
上付き、下付き文字
一部だけ斜体/太字
ファイルからデータを読む
data  読み込むファイルの名前
xcolumn  xの値とする列
ycolumn  yの値とする列
読み込むファイルの形式は GNUPLOT と同じ。
(列を指定して列ごとに読む。)

xcolumn, ycolumn で、どの列を使うか指定できる。

GNUPLOT のように掛けたり割ったりすることができないので、先に awk などで処理をしておく必要がある。
(正確に言うとできるが非常に大変。)


軸を対数にしている場合

例えば x軸を対数で取りたい場合、
logarithm  x
と書いておく。
データを線でつなぐ
connect
データを線でつなぐ。
データ点を打つ
points
データ点を打つ。
線種を変更
lstyle  整数
で、線の種類を変えられる。
変更は、これ以降の全ての線に適用される。
デフォルトは実線(1)。


番号と線種

1 : 実線
2 : 破線
3 : dot - dash - dot - dash
4 : 点線
5 : dash - dot - dot - dot
線の太さを変更
lwidth  整数
線の太さを変更。
"1" がデフォルトの太さ(約0.005inch)で、その何倍の太さにするか。

注1:線を太くすると、破線や点線の間隔も大きくなる。
注2:XWINDOW で見てもあまり変わっていないことがある。 (PostScriptにするとちゃんと変わっている。)
色を変更
color  整数
で、色を変更できる。

線にも文字にも使える。
一度変更すると、次ぎに変更するまで、線も文字もその色になる。


主な色と番号

0 : 黒 (背景色) PostScriptでは白
1 : 白 (線の初期値) PostScriptでは黒
2 : 赤
3 : 緑
4 : 青

他の色と番号はこちら。既定値の色テーブル
シンボルを変更
symbol  番号
プロット点のシンボルを変更。
番号とシンボルの対応表はこちら
対数の場合のまとめ
対数でプロットしたい場合にすべきこと。
  1. limits で、最大値・最小値に肩の数字を与える。
  2. box で、引数に "l" を入れる。
  3. logarithm を入れる。
  4. 枠内に文字等を書く時の位置も肩の数字で指定。参考
凡例を作る
WIPには自動で凡例を作る機能がないので、自分で線を引いて、文字を書き込 んで、凡例を作る。
書きたい場所へ移動
move   x座標   y座標
線を引く、文字を書くために、まず、その始点に移動する。
座標の数字は、軸と共通(ワールド座標と言う)。

注:軸を logscale にしている場合は、肩の数字で座標を指定する。
直線をひく
draw   x座標   y座標
move で指定した座標から、draw で指定した座標まで直線を引く。
線種は lstyle で選べる。
点を打つ
dot
move で指定した座標に点を打つ。
symbol でシンボルを選べる。
文字を書く
まず、move で、書きたい場所に移動。
(move で指定した座標は、文字の左下になる。)
label   書きたい文字
で、文字が書ける。
フォント等の変更は以下参照。
フォントの変更
font  整数
で、フォントを指定できる。


番号とフォント

1 : Normal font (デフォルト)
2 : Roman
3 : Italic
4 : Script (手書き風?)
フォントサイズの変更
expand   小数
で、文字の大きさを変更できる。
1.0 がデフォルトの大きさ。
その何倍にするかを指定する。
ギリシャ文字
\g
をアルファベットの前に付けるとギリシャ文字になる。

例:
\ga  →  α
途中でフォントを変更
途中でフォントを変更できる。
\fr ローマンに変更
\fi イタリックに変更
上付き、下付き文字
\d
下付きにする or 上付きから元に戻す。(一段下げる)
\u
上付きにする or 下付きから元に戻す。(一段上げる)
特殊記号
\(番号)
で、特殊記号が書ける。
太陽マークは \(2281)。
×は \(2235)。
他のマークのリスト。
http://www.astro.caltech.edu/~tjp/pgplot/hershey.htmlのB.2を参照。

度を表す°を書く方法。
^  → °
マクロを定義する
下の関数の場合の具体例を見た方がわかりやすいかも。

基本事項

変数
いくつかすでに定義されている変数がある。
使いそうなものはこちら。
x, y, err
それぞれ、xの値、yの値、errorの値が入っている関数。
x[1]
とかでアクセスできる。
注意:「0」ではなく「1」から始まる。

一時的に値を入れたい時に使える変数。
\0 〜 \20

代入
set 変数 代入する値
(例) set \0 1.5
\0 という変数に 1.5 を代入。


式の定義
(例) set \0 sin(\1) + 10
変数\0にsin(\1)+10の値を代入。
注意:「+」とか「-」とかの前に必ず「スペース」を入れないといけない。


使える関数については、下のリンク先(上)を参照。

参考
マクロについて全体的な説明
変数や使える関数について
もうちょっと具体的な例

関数を定義する
関数の例
define func                    # 関数の名前を定義
set $1 $1 + 1                  # カウンター(1から始めないとダメ)
set \9 0.01 * ($1 - 1)         # \9 という変数に代入。($1はひとつめの引数)
set x[$1] \9                   # x(x軸に使う値の配列)の$1に値を代入
set y[$1] 1000 * exp($2 * \9)  # y(y軸に使う値の配列)の$1に値を代入
end                            # 定義の終了 ($2は2つめの引数)
注:$1, $2, ...は、引数の1つめ、2つめ...を表す。


呼び出す時の例
set \0 0           # \0 という変数に0を代入
loop 100 func \0 -0.1   # 100回 func を呼び出す(後ろは引数)
connect                 # 線でつなぐ

全部合わせるとこんな図が描ける。
define generate
set \9 0.01 * ($1 - 1)
set x[$1] \9
set y[$1] 1000 * exp($2 * \9)
set $1 $1 + 1
end

paper 5 1.2
viewport 0.2 0.9 0.2 0.9
limits 0 2.5 200 1000
lstyle 1
expand 1.8
font 2
box bcnst bcnst
expand 2.0
xlabel \fiT\fr(Myr)
ylabel \fim\fr(M\d\(2281)\u)

set \0 1
loop 250 generate \0 -9.7e-2
connect

lstyle 2
set \0 1
loop 250 generate \0 -5e-1
connect

font 2
move 1.6 900
label Low

move 1.6 500
label High



Top Home