グラフを作成する

作成は、おそらく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 YY データをプロットする

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

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

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

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

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

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

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

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);

LabTalkでグラフテンプレートをインストール/アンインストール

次のコマンドのように、LabTalkを使ってグラフテンプレートをインストール/アンインストールできます(インストール/アンインストールするグラフテンプレートがUserFilesフォルダに存在する必要があります)。アンインストールしても、ファイルはUserFilesフォルダから移動しません。

// インストール
run.section(dofile.ogs, OnInstallTemplate, "%YMyTemplate.otpu");
// アンインストール
run.section(dofile.ogs, OnUnInstallTemplate, "%YMyTemplate.otpu");