公開日: 11/25/2021

ドリルダウングラフの作成

ドリルダウングラフとは、サムネールをクリックしたときに作成されるグラフです。ホバーラベルのグラフをクリックすると、新しいウィンドウにグラフが表示され、そのウィンドウで詳細を確認したり、データフィルタを変更したりできます。たとえば、ツリーマップ上であるセルをクリックすると、そこに該当するデータの詳細を新しいウィンドウに表示したりできます(図12.48)。Ctrlキーを押しながらクリックすると、新しいウィンドウが開くのではなく、最後に起動したウィンドウの内容が置き換わります。

「次の階層レベル」列プロパティを使うと、プリセットグラフでのカテゴリカル変数のドリルダウンの動作を定義することができます。この「次の階層レベル」列プロパティは、現在のグラフのグループ変数のカテゴリから、次のグラフのグループ変数のカテゴリへ、という1レベルだけのドリルダウンを定義します。

「次の階層レベル」列プロパティを定義しない場合は、データテーブルの中でフィルタに追加されていないカテゴリカルな列または名義尺度の列のリストが使用されます。

メモ:

「次の階層レベル」列プロパティは、[グラフレットの貼り付け]によって定義するグラフレットでは使えません。[グラフレットの貼り付け]コマンドの詳細は、『JMPの使用法』のグラフのカスタマイズを参照してください。

Yの役割である変数がない場合、JMPは、データテーブルの数値列を取得しようとします。そして、データテーブルに数値列もない場合は、「度数」を使用します。

図12.48は、ツリーマップのセルでドリルダウンした様子を示しています。

図12.48 ホバーラベルのドリルダウングラフの例 

Example of a Drill-Down Graph on a Hover Label

次のスクリプトは、図12.48に表示されているツリーマップの例を、1層だけの単純なものにしています。

Names Default To Here( 1 );
 
/* 与えられた列名のリストを調べ、ドリルダウンを可能にするチェーンを作成するような
	「次の階層レベル」列プロパティを定義する */
setHierarchy = Function( {dt, cols},
	{Default Local},
	nCols = N Items( cols );
	If( nCols < 2,
		Write( "\!NsetHierarchy: 列の数が足りません!" ),
		col = Column( dt, cols[1] );
		For( i = 2, i <= nCols, i++,
			nextCol = cols[i];
			Try(
				Column( dt, nextCol ),
				Write( "無効な列名: " || nextCol );
				Throw();
			);
			// ここでEval()が必要
			col << Set Property( "次の階層レベル", Eval( nextCol ) );
			nih_name = col << Get Property( "次の階層レベル" );
			col = Column( dt, nextCol );
		);
	);
);
 
// 「San Francisco Data.jmp」を開く
dt = Open( "$SAMPLE_DATA/San Francisco Crime.jmp" );
 
// データテーブルに「次の階層レベル」チェーンを追加する
setHierarchy( dt, {"警察管轄区域", "種類", "事件内容"} );
 
/* 階層の最初のレベル「警察管轄区域」によるツリーマップをグラフビルダーで作成*/
gb = dt << Graph Builder(
	Size( 495, 440 ),
	Show Control Panel( 0 ),
	Variables( X( :警察管轄区域 ) ),
	Elements( Treemap( X ) )
);
 
// グラフのフレームボックスへのハンドルを取得する
rpt = gb << Report;
frame = rpt[Framebox( 1 )];
 
/* ホバーラベルの拡張機能であるグラフレットにより
	ホバーラベルにグラフのサムネールを追加する。サムネールをクリックすると、
	そのグラフが専用のウィンドウで表示される(Ctrlキーを押しながら
	クリックした場合はグラフがその場で置き換えられる)*/
frame << Set Graphlet(
	// サムネールを定義し、ツリーマップを起動
	Picture(
		// 「次の階層レベル」列プロパティから次のグループレベルが取得される
		local:propColName = local:_groupings[1] << GetProperty( "次の階層レベル" );
		local:nextGrouping = Column( local:_dataTable, local:propColName );
 
		// サムネール用のグラフビルダーのグラフを定義する
		Graph Builder(
			Size( 200, 250 ),
			Show Legend( 0 ),
			Show Title( 0 ),
			Show Footer( 0 ),
			Show Control Panel( 0 ),
			Variables( X( local:nextGrouping ) ),
			Elements( Treemap( X ) )
		);
	)
);
 
// グラフレットを表示してピン止めする
frame << Add Pin Annotation(
	Seg( TreeMapSeg( 1 ) ),
	Index( 2 ),
	Index Row( 7033 ),
	UniqueID( 581248018 ),
	FoundPt( {52, 248} ),
	Origin( {27.6544421487603, 200.14987244898} ),
	Tag Line( 1 )
);
より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).