グラフ作成

plotxy、plotmatrixなどグラフ作成のためのXファンクションを使用したスクリプトのサンプルです。

  1. LabTalkによるグラフ作成のサンプル
    1. plotgroup(グループ化変数に従った作図)
    2. plotmatrix(散布図行列を作図)
    3. plotstack(積み上げグラフを作図)
    4. plotxy(折れ線や散布図など基本的な2Dグラフを作図)
    5. plotxyz(XYZデータから3Dグラフを作図)
    6. plotm(行列データからグラフを作図)
    7. plotpClamp(pClampデータの作図)

LabTalkによるグラフ作成のサンプル

plotgroup(グループ化変数に従った作図)

グループ化変数(データセット)に従って、 plotgroupはページ毎、レイヤ毎、データプロット毎でグループ化したプロットを作成します。正確に実行するためには、ワークシートをグラフグループデータ、レイヤグループデータ、データプロットグループデータの順でソートする必要があります。

/*
このサンプルではグループでプロットする方法を示します
サンプルデータは、Originインストールフォルダの\Samples\Statistics\body.datです。
1. サンプルデータをロード
2. ワークシートをソート
3. グラフを作図
*/
// サンプルデータを取得
fn$ = system.path.program$ + "Samples\Statistics\body.dat";newbook;impASC fn$;
// ワークシートをソート - この工程はとても重要です
wsort bycol:=3;
// グループごとにプロット
plotgroup iy:=(4,5) pgrp:=Col(3); 

/* 次のサンプルでは、1つのグループをもとにしたグラフウィンドウを作成し、
2つ目のグループをもとにしたグラフレイヤを作成します*/
// サンプルデータを開く
fn$ = system.path.program$ + "Samples\Graphing\Categorical Data.dat";
newbook;
impASC fn$;
// ソート
dataset sortcol = {4,3}; // drug、genderの順に
dataset sortord = {1,1}; // 昇順でソート
wsort nest:=sortcol ord:=sortord;
// 性別ごとにレイヤを分けて、各薬のグラフを作成
plotgroup iy:=(2,1) pgrp:=col(drug) lgrp:=col(gender);

Note:各グループ変数はオプションです。例えば、ページグループとデータグループを省略して、レイヤ毎にデータをまとめる1つのグループ変数を使えます。どのオプションを使用する場合でもソート順は同じです。

plotmatrix(散布図行列を作図)

plotmatrixは、散布図行列を作図します。各データをYとし、Y以外のデータを対応するXデータとして作図していきます。グラフはワークシートのグリッドに作図されます。信頼楕円を含めたり、各グラフで線形フィットしたり、相関係数をレポートするオプションがあります。

// 指定したワークシートの列2、3、5を使用して散布図行列を作図
newbook na:=PlotMatrixEX op:=1;
wo -a 3;   // 3列追加
col(1)=data(1,30);
col(2)=uniform(30);
col(3)=normal(30);
col(4)=uniform(30);
col(5)=col(3);
plotmatrix
  irng:=[PlotMatrixEX]Sheet1!(2,3,5)
  ellipse:=1
  conflevel:=50
  fit:=1;
 
// データとグラフのためのシートを持つ新しいブックを作成
// ソースブックの全シートの列1と2の散布図行列データを集めるためにこのブックを使用する
newbook na:=PMEx2 op:=1;
repeat 3 newsheet;
loop(ii,1,4) {
    page.active = ii;     // 各シートで繰り返す
    col(1) = uniform(25);
    col(2) = uniform(25);
}
for( ii = 1 ; ii <= 4 ; ii++)
{
  range rData = [PMEx2]$(ii)!(1,2);
  plotmatrix
  irng:=rData
  ellipse:=1
  conflevel:=50
  fit:=1
  rd:=[STATS]MyScatterData
  rt:=[STATS]MyScatterGraphs;
}

plotstack(積み上げグラフを作図)

plotstackは、複数データセットから積み上げグラフを作成します。

// サンプルデータを開く
newbook;
string fn$ = system.path.program$ + "Samples\Graphing\Linked Layers 1.dat";
impasc fname:=fn$;
%N = %H;
// 全列対列1の積み上げグラフを作図
plotstack iy:=(1,2:end) plottype:=line link:=1 xlink:=1;
 
// 列2対列1および列4対列3の積み上げグラフを作図
win -a %N;
plotstack iy:=((1,2), (3,4)) plottype:=column link:=0;
 
// 使用するテンプレート指定可能
// ただし、データセットごとにテンプレートのインスタンスをロードするので、単一レイヤのテンプレートを使用
// スタイルフォルダを使用するためには、テンプレートに適応したプロットタイプを指定
win -a %N;
plotstack iy:=((1,2),(1,3),(1,4)) plottype:=3 template:=column;

plotxy(折れ線や散布図など基本的な2Dグラフを作図)

plotxyは、様々なグラフ作図の用途で使用できます。以下にいくつかのサンプルを示します。

// Example 1-4で使用する、6列持つシートが3枚あるワークブックを作成
newbook sheet:=3;
string bkName$ = %H;
loop(ii,1,page.nlayers) {
    page.active = ii;
    wo -a 4;
    col(1) = data(1,30);
    col(2) = uniform(30);
    col(3) = normal(30);
    col(4) = 2 * col(2);
    col(5) = 3 * col(3);
    col(6) = col(5) / col(4);
}
 
////////// Example 1 ////////////////////////////////////////
// アクティブワークシートの3番目のグラフを作成
plotxy 3;
page.label$ = plotxy 3;
 
////////// Example 2 ////////////////////////////////////////
// アクティブワークシートの列3、4、5を作図
win -a %(bkName$); // plotxyでブックを指定しないので、ブックをアクティブにする
plotxy 3:5;
 
// Sheet2の列2をXとして、列3、4、5を作図
// デフォルトの設定でアクティブグラフウィンドウに新しいグラフレイヤを追加
plotxy [bkname$]Sheet2!(2,3:5); // plotxy specifies Book and Sheet so does not need to be active
 
// 2つのレイヤを再編成
layarrange row:=2 col:=1 ygap:=7 left:=12 right:=12 top:=10 bottom:=15;
page.label$ = plotxy 3:5 and [%(bkname$)]Sheet2!(2,3:5);
 
////////// Example 3 ////////////////////////////////////////
// 次の表記法を使用
//    範囲内全てのyを作図 : (?,1:end)
//    テンプレートを使ってグラフを作図し名前付け : [<new template:=column.otp name:=MyGraph>]
plotxy [bkname$]Sheet3!(?,1:end) pl:=230 ogl:=[<new template:=column.otp name:=MyGraph>];
page.label$ = plotxy [%(bkname$)]Sheet3!(?,1:end) pl:=230 ogl:=[<new template:=column.otp>];
 
////////// Example 4 ////////////////////////////////////////
// 変数を使用可能
win -a %(bkname$);
range rSheet = $(page.active)!;
range rPage = rSheet.GetPage()$;
for( ix = 1 ; ix < int(rSheet.NCOLS) ; ix += 2 )
{
   plotxy [%(rPage.name$)]%(rSheet.name$)!($(ix),$(ix+1)) ogl:=1;
}
 
// レイヤ内のデータセットをグループ化して自動で色推移
layer -g;
page.label$ = Using variables with plotxy;
 
////////// Example 5 ////////////////////////////////////////
// 新しいデータから開始
newbook template:=origin.otw;
impasc fname:=system.path.program$+"Samples\Curve Fitting\Activity.DAT" option.names.FNameToBk:=0;
 
// ブックとシートの名前を記録
string bkname$ = page.name$;
string shname$ = layer.name$;
 
// 指定したグラフテンプレートに列Bを3つの範囲に分けて作図
plotxy [bkname$]shname$!((1,2[1:6]),(1,2[7:12]),(1,2[13:18])) plot:=202 ogl:=[<new template:=doubley name:=SamplePlot>];
 
// テンプレートの2番目のレイヤに列Cの3つの範囲を追加
plotxy [bkname$]shname$!((1,3[1:6]),(1,3[7:12]),(1,3[13:18])) plot:=202 ogl:=2;
 
// 再スケール
layer1.x.from = 2;
layer1.x.to = 30;
page.label$ = Multi-range plot;
 
// 作図した全てのグラフを表示
doc -e W {
    win -i;
}
win -s T;

plotxyz(XYZデータから3Dグラフを作図)

XYZデータから3Dグラフを作成するために、Xファンクションplotxyzを使用します。

////////// Example 1 ////////////////////////////////////////
// 離散したデータから3D棒グラフを作図
// データファイルをインポート
string fn$=system.path.program$ + "\Samples\Statistics\automobile.dat"; 
impasc fname:=fn$; 
// 列属性を設定
wks.col3.type=6;
wks.col4.type=4;
wks.col6.type=1;
// ワークシートから列を選択して3D棒グラフを作成
plotxyz iz:=(4,6,3) plot:=242 ogl:=<new template:=gl3dbars>;
// スピードモードをオフにしてグラフをリフレッシュ
layer.maxpts=0;
doc -uw;
 
////////// Example 2 ////////////////////////////////////////
// 3Dカラーマップ曲面図を作図して上部に等高線図を投影
// データファイルをインポート
string fn$=system.path.program$ + "\Samples\Graphing\Gaussian Surface.dat"; 
impasc fname:=fn$; 
// 3列目をZとして設定
wks.col3.type=6;
plotxyz iz:=3 plot:=103 ogl:=<new template:=glcmap>;
layer -ip103 %c;
range rr = 2;
set rr -spf 1;
set rr -spz 100;
 
////////// Example 3 ////////////////////////////////////////
// 3つの範囲に分けて3D散布図を作図
// データファイルをインポート
string fn$=system.path.program$ + "\Samples\Statistics\Fisher's Iris Data.dat"; 
impasc fname:=fn$; 
// 3番目の列をZとして設定
wks.col3.type=6;
// 範囲分け
range r1=col(3)[1:50];
range r2=col(3)[51:100];
range r3=col(3)[101:end];
// 同じレイヤにそれぞれの3D散布図を作図
plotxyz iz:=r1 plot:=240 ogl:=<new template:=gl3d>;
plotxyz iz:=r2 plot:=240 ogl:=[%H]1!;
plotxyz iz:=r3 plot:=240 ogl:=[%H]1!;
legendupdate;

plotm(行列データからグラフを作図)

Xファンクションplotmは、行列からグラフを作図するときに使用します。

newbook name:=MyMatrix mat:=1;
matrix -v x^2-y^2;	
plotm im:=<active> plot:=103 ogl:=<new template:=glcmap>;

3D曲面図のカラーマップは、set %C -b3c を使用して他の行列オブジェクトから設定することもできます。

newbook name:=CMap mat:=1;
matrix -v 10*x+10*y;    // カラーマップ曲面用の行列を設定
newbook name:=MyMatrix mat:=1;
matrix -v x^2+y^2;	// 曲面用の行列を設定
plotm im:=<active> plot:=103 ogl:=<new template:=glcmap>;  // 曲面用の行列を3Dカラーマップ曲面図として作図
 
range rr=[Cmap]1!1;  // rangeを定義
set %C -b3c rr;  // ほかの行列オブジェクトからカラーマップを設定

plotpClamp(pClampデータの作図)

XファンクションplotpclampはpClampインポートでインポートされたデータのグラフ作成を行います。

fname$=system.path.program$+"Samples\Import and Export\pCLAMP\93311C01.DAT";
imppClamp;
plotpclamp 1:end tag:=1 stimulur:=1 septstim:=0 ctrl:=0 mode:=2;

その他のスクリプトサンプル

 

page_top_icon