次の例は、「クラスター分析」プラットフォームの簡易版ディスプレイボックスを描き、指定の引数を使ってプラットフォームを起動します。
注: 機能の一部(前回の設定とヘルプ)はスクリプトから実行できないので、該当するボタンをクリックすると警告のウィンドウが表示されます。さらに、階層的クラスター法からK-Meansクラスター法に切り換えても、ユーザインターフェースで表示されるときと違い、ウィンドウ自体は変化しません。
dt = Open( "$SAMPLE_DATA/Birth Death.jmp" );
nc = N Col( dt ); // ウィンドウ内の列数
lbWidth = 130; // ウィンドウの幅
// 手法のリストを定義
methodList = {"群平均法", "重心法", "Ward法", "最短距離法", "最長距離法"};
notImplemented = Expr(
win = New Window( "この機能はまだ実行できません", <<Modal, Button Box( "OK" ) )
);
clusterDlg = New Window( "クラスター分析", // ウィンドウを作成
<<Modal,
Border Box( Left( 3 ), Top( 2 ),
V List Box(
TextBox("近くに位置する点、近い値を持つ点を探す" ),
H List Box(
V List Box(
Panel Box( "列の選択",
colListData = Col List Box(
All,
width( lbWidth ),
NLines( Min( nc, 10 ) )
)
),
Panel Box( "オプション",
V List Box(
comboObj = Combo Box(
{"階層型", "K-Means法"},
<<Set( 1 )
),
Panel Box( "手法",
methodObj = Radio Box( methodList, <<Set( 3 ) )
),
checkObj = Check Box( {"データの標準化"}, <<Set( 1, 1 ) )
)
)
),
Panel Box( "選択した列に役割を割り当てる",
Line Up Box( N Col( 2 ), Spacing( 3 ),
Button Box( "Y, 列",
colListY << Append( colListData << GetSelected )
),
colListY = Col List Box(
width( lbWidth ),
NLines( 5 ),
"数値"
),
Button Box( "順序",
colListO << Append( colListData << GetSelected )
),
colListO = Col List Box(
width( lbWidth ),
NLines( 1 ),
"数値"
),
Button Box( "ラベル",
colListL << Append( colListData << GetSelected )
),
colListL = Col List Box( width( lbWidth ), NLines( 1 ) ),
Button Box( "By",
colListB << Append( colListData << GetSelected )
),
colListB = Col List Box( width( lbWidth ), NLines( 1 ) )
)
),
Panel Box( "アクション",
Line Up Box( N Col( 1 ),
Button Box( "OK",
If( (comboObj << Get) == 1,
Hierarchical Cluster(
Y( Eval( colListY << GetItems ) ),
Order( Eval( colListO << GetItems ) ),
Label( Eval( colListL << GetItems ) ),
By( Eval( colListB << GetItems ) ),
Method( methodList[methodObj << Get]
),
Standardize( checkObj << Get( 1 ) )
),
KMeansCluster( Y( colListY << GetItems ) )
);
clusterDlg << Close Window;
),
Button Box( "キャンセル", clusterDlg << Close Window ),
Text Box( " " ),
Button Box( "削除",
colListY << RemoveSelected;
colListO << RemoveSelected;
colListL << RemoveSelected;
colListB << RemoveSelected;
),
Button Box( "前回の設定", notImplemented ),
Button Box( "ヘルプ", notImplemented )
)
)
)
)
)
);
図11.31 「クラスター分析」起動ウィンドウ