グラフを作成する

グラフ作成は、おそらくOriginで最も頻繁に実行される操作です。Originには、グラフ作成に関連する様々なXファンクションおよびLabTalk関数が用意されています。作図に使用されるXファンクションは、プロットカテゴリで確認できます。また、以下のコマンドを入力してリストを表示できます。

lx cat:="plotting";

Xファンクションのいくつかは、特定のデータ形式からグラフを作成します。例えば、plotxy は、XY範囲データからグラフを作図し、plotmは、行列データからグラフを作図します。他に、生データからグループ化ボックスチャートを作図するplotgboxraw や、トリリニアダイアグラムを作図するplotpiperなど、特殊なグラフタイプを作図するものもあります。プロットカテゴリを参照して、各Xファンクションの詳細を確認できます。

以下のセクションは、LabTalkスクリプトから直接グラフを作成する次の2つのXファンクション、plotxyおよびplotgroupのサンプルです。一度、プロット が作成されると、 ページレイヤ オブジェクトのようなオブジェクトプロパティを使って、set コマンドグラフを整えることができます。

PLOTXY Xファンクションを使ってグラフを作成する

plotxy は一般的な目的のグラフを作成するのに使用します。 これは グラフウィンドウを作成したり、 グラフテンプレートにプロットしたり、新しい グラフレイヤにプロットするのに使用されます。 すべてのXファンクションと共通のシンタックスがあります。

plotxy オプション1:=optionValue オプション2:=optionValue ... オプションN:=optionValue

利用可能なオプションと値は X-Functionヘルプのplotxyにまとめられています。 あまり直観的ではないので、plot オプションとその一般的な値はこ以下にまとめられています。

plot:= グラフタイプ
200 折れ線
201 散布図
202 線+シンボル
203 縦棒グラフ

plot オプションで利用可能なすべての値は、プロットタイプIDにあります。

X Y データをプロットする

XおよびYを参照するXYRange入力

次のサンプルは、アクティブワークシートの最初の2列について、最初の列をXとして、2列目をYとして、折れ線グラフでプロットします。

plotxy iy:=(1,2) plot:=200;

Yのみを参照するXYRangeを入力

次のサンプルは、アクティブワークシートの2列目を、それに関連するXデータに対するYとして、折れ線グラフでプロットします。明示的にXを指定しない場合、Originはワークシート内でYデータの左側にある直近のX列を使用します。該当するX列がない場合には <自動> X が使われます。 デフォルトで、<自動> Xは行番号です。

plotxy iy:=2 plot:=200;

X Y データをプロットする

次のサンプルは、Book1、Sheet1の最初の3列について、最初の列をXとし、2列目と3列目をYとして、グループ化した散布図としてプロットします。

plotxy iy:=[Book1]Sheet1!(1,2:3) plot:=201;

XY XY データをプロットする

次のサンプルは、アクティブワークシートの最初の4列について、最初の列をXとし、2列目を1列目のXに対するYとして、さらに3列目をXとし、4列目を3列目のXに対するYとして、グループ化した線+シンボルグラフでプロットします。

plotxy iy:=((1,2),(3,4)) plot:=202;

ワークシート列のXY属性を使ってプロットする

次のサンプルは、アクティブワークシートのすべての列をすでに設定された列XY属性を使って縦棒グラフでプロットします。 '?' はワークシートのXY属性を使うことを示しています。'1:end' はすべての列をプロットすることを示しています。

plotxy iy:=(?,1:end) plot:=203;

列の一部分をプロットする

次のサンプルは、アクティブワークシートのすべての列のうち1~12行目までを、グループ化折れ線グラフでプロットします。

plotxy iy:=(1,2:end)[1:12] plot:=200;

Note:部分範囲についての詳細は、X値を使用した部分範囲指定を確認してください。

グラフテンプレートにプロットする

次のサンプルは、アクティブワークシートの最初の列をtheta(X)、2番目の列を r(Y) として、極座標グラフにプロットし、グラフウィンドウの名前を MyPolarGraphとします。

plotxy (1,2) plot:=192 ogl:=[<new template:=polar name:=MyPolarGraph>];

既存のグラフレイヤにプロットする

次のサンプルは、アクティブワークシートの10~20列目までを列XY属性を使って、Graph1の2番目のレイヤにプロットします。 これらの列は、すべてY列にすることができ、ワークシート内で結びついたX列に対してプロットされます。

plotxy iy:=(?,10:20) ogl:=[Graph1]2!;

新しいグラフレイヤを作成する

次のサンプルは、アクティブグラフウィンドウに新しく下X軸左Y軸のレイヤを追加し、Book1、Sheet2から最初の列をXとして3列目をYとして、折れ線グラフでプロットします。 グラフウィンドウがアクティブで出力グラフレイヤを指定しない場合には、新しいレイヤが作成されます。

plotxy iy:=[Book1]Sheet2!(1,3) plot:=200;

二重Yグラフの作成

// データファイルをインポート
string fpath$ = "Samples\Import and Export\S15-125-03.dat";
string fname$ = system.path.program$ + fpath$;
impASC;
 
// ブックとシート名を記憶
string bkname$ = page.name$;
string shname$ = layer.name$;
 
// 1番目と2番目の列をXおよびYとしてプロット 
// ワークシートがアクティブなら列範囲を指定するだけ
plotxy iy:=(1,2) plot:=202 ogl:=[<new template:=doubleY>];
 
// 2番目のレイヤに最初と3番目の列をプロット
// グラフウィンドウがアクティブなので 
//ブックとシートを指定
plotxy iy:=[bkname$]shname$!(1,3) plot:=202 ogl:=2;

PLOTGROUP Xファンクションを使ってグラフグループを作成する

グループ化変数(データセット)に従って、 plotgroup Xファンクションはページ、レイヤ、データプロットのプロットを作成します。正しく動作させるには、最初にワークシートをグラフグループデータでソートし、次にレイヤグループデータ、最後にデータプロットグループデータでソートします。

以下のサンプルはグループでプロットする方法を示しています。

// サンプルデータをセット
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つのグループ変数を使うことができます。使用するオプションがどれであっても同じソート順にすることが重要です。

Worksheet -p コマンドを使って3D グラフを作成する

3Dグラフを作成するには、 Worksheet (コマンド) (-p スイッチ)を使います。

最初に、単純な3D散布図を作成します。

// 新しいブックを作成
newbook r:=bkn$;
// bkn$でスクリプトを実行
win -o bkn$ {
	// サンプルデータをインポート
	string fname$ = system.path.program$ +
		"\samples\Matrix Conversion and Gridding" +
		"\XYZ Random Gaussian.dat";
	impasc;
	// 新しいブック名を保存
	bkn$ = %H;
	// 列タイプをZに変更
	wks.col3.type = 6;
	// 列3を選択
	worksheet -s 3;
	// 3D散布図を"3d"という名前のテンプレートでプロット
	worksheet -p 240 3d;
};

また、3Dカラーマップや3Dワイヤーフレームも作成することができます。3Dグラフはワークシートまたは行列のどちらかから作成することができます。プロットするまえに グリッディング を行う必要があるかもしれません。

上記のサンプルのあと次のスクリプトを実行すると、行列から3Dワイヤーフレームを作成できます。

win -o bkn$ {
	// Shepard方でグリッディング
	xyz_shep 3;
	// 3Dワイヤーフレームグラフを作図
	worksheet -p 242 wirefrm;
};

仮想行列から3Dおよび等高線グラフを作成する

Originでは、 plotvm X-ファンクションにより、ワークシートから3Dカラーマップ、等高線図、3Dワイヤーフレームといった3Dグラフを作成することもできます。この関数は、 仮想行列を作成し、行列のような形式からプロットします。例えば、

// 新しいワークブックを作成し、サンプルデータをインポート
newbook;
string fname$=system.path.program$ + "Samples\Graphing\VSurface 1.dat";
impasc;
// 仮想行列としてシート全体を扱い、カラーマップ曲面プロットを作成
plotvm irng:=1! format:=xacross rowpos:=selrow1 colpos:=selcol1
 ztitle:="VSurface 1" type:=242 ogl:=<new template:=cmap>;
// X軸スケールを対数に変更
// 仮想行列から作成された3Dグラフに対してサポートされる非線形の軸タイプ
LAYER.X.type=2;


円形の樹形図を作成する

円形の樹形図を作成するメニューは、OriginのGUIにはありません。このグラフタイプを作図する場合、階層的クラスター分析を実行してグラフを作成するか、次のスクリプトを使用します。

run.section(plot, CircularPhyTree); 

run.section(plot, CircularBinPhyTree);

このサンプルは、この種類のグラフを作図する方法を示しています。

// データファイルをインポート
newbook;
string fpath$ = "Samples\Graphing\US Mean Temperature.dat";
string fname$ = system.path.program$ + fpath$;
impASC;
// 階層的クラスター分析
hcluster -r 2 irng:=[USMeanTempera]"US Mean Temperature"!D"January"[1]:O"December"[100] link:=ward number:=4 center:=1;
// データセットを選択
page.active$ = "Cluster Plot Data1" ;
worksheet -s 1 0 3 0;
// グラフ作図
run.section(plot, CircularPhyTree);