次の例は、JSLを使って、「クラスター分析」プラットフォームの起動ダイアログを簡易にしたものを、ディスプレイボックスによって描きます。そして、ユーザによって指定された引数に基づき、「クラスター分析」プラットフォームを起動します。
メモ: 機能の一部(前回の設定とヘルプ)はスクリプトから実行できないので、「該当する」ボタンをクリックすると警告のウィンドウを表示するようにしています。さらに、階層的クラスター法から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 「クラスター分析」起動ウィンドウ