スクリプトガイド > スクリプトによるグラフ作成 > ホバーラベル > グリッドレットを使ってホバーラベルの名前と値を更新する
公開日: 09/19/2023

グリッドレットを使ってホバーラベルの名前と値を更新する

グリッドレットを使うと、ホバーラベルに表示されるデータの名前と値を自由にカスタマイズすることができます。ホバーラベルのデータの追加・削除や、表示名の変更のほかに、スタイルや数値の表示形式の指定も行えます。

グラフのマーカーにポインタを置くと、ホバーラベルにそのデータの情報が表示されます。ホバーラベルに表示されるテキストは、デフォルトでは、ラベル列、および、グラフ要素に使用されているデータテーブル列で構成されます。これらラベル列やデータテーブル列を、ここでは「グリッドエントリ」と呼びます。デフォルトでは、グラフの役割に指定された列の名前(とその値)、および、ラベル列の名前(とその値)が表示されます。これらの列名や値をカスタマイズしたり、他の内容を追加したりできます。具体的には、次のような操作が可能です。

列名やその値を追加・削除する

グリッドラベルの名前を変更する

動的な値とクリックアクション(オプション)を持つグリッドエントリを新たに追加する。たとえば、「参照項目」というグリッドエントリを挿入し、Wikipediaのページへのリンクを値とすることができます。

テキストにスタイルを適用する(テキストを太字にするなど)

数値の表示形式を設定する(小数点以下の桁数を2にするなど)

Figure 12.46では、「ジャンル」・「タイトル」・「上演時間」を追加し、上演時間のラベルと表示形式を変え、「ジャンル」を太字にしています。

図12.46 カスタマイズしたグリッドレット 

カスタマイズしたグリッドレット

グリッドレットのカスタマイズ例

Figure 12.46のグラフとホバーラベルは、次のようなスクリプトで作成できます。

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Movie Inventory.jmp" );
 
// ベースとなるグラフを作成する
dt << Graph Builder(
	Size( 534, 456 ),
	Show Control Panel( 0 ),
	Variables( X( :年 ), Y( :上演時間 ) ),
	Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) ),
	SendToReport(
		Dispatch(
			{},
			"Graph Builder",
			FrameBox,
			{Set Gridlet(
				// 「上演時間」列を削除する
				Expunge( {{Matcher( "上演時間" )}} ),
				// 「タイトル」、「ジャンル」、「時間」列を追加する
				Annex(
					{{Matcher( "タイトル" ), value( :タイトル[local:_firstRow] )},
					{Matcher( "ジャンル" ), value( :ジャンル[local:_firstRow] )},
					{Matcher( "時間" ), value( local:_上演時間 *
						60 )}}
				),
				Reformat(
				// 「時間」の表示形式を変える
					{{Matcher( "時間" ), Format( "hr:m", 80 ),
					80}}
				),
				Style(
				// 「ジャンル」を9ポイントの太字にする
					{{Matcher( "ジャンル", Scope( Name ) ), Font("メイリオ", 9,
						"太字")
					}}
				)
			), Add Pin Annotation(
				Seg( Marker Seg( 1 ) ),
				Index( 33 ),
				Index Row( 33 ),
				UniqueID( 610643713 ),
				FoundPt( {508, 199} ),
				Origin( {1964.8951552795, 199.00456244898} ),
				Tag Line( 1 )
			)}
		)
	)
);

グリッドレットのコマンド

どのSet Gridletコマンドの場合も、最初の引数は、アクションのスコープ(対象となるグリッドエントリ)を指定するMatcherです。Matcherは、次の項目を参照できます。

1つのグリッドエントリ: 名前で参照します。指定した文字列と同じ名前のグリッドエントリが参照されます。ホバーラベルに表示されるテキストは、デフォルトでは、ラベル列、および、グラフ要素に使用されているデータテーブル列で構成されます。これらラベル列やデータテーブル列を、ここでは「グリッドエントリ」と呼びます。

複数のグリッドエントリ: 列参照、正規表現、または引数Allで参照する。

たとえば、「平均(身長)」というグリッドエントリは、次のような指定で参照されます。

名前そのもの "平均(身長)"n

列参照 :身長

正規表現  PatReg("^.*\(身長\)$")

特殊な引数Allは、グリッド内のすべての行とマッチします。

これらの指定にマッチしたグリッドエントリがあった場合、それらのグリッドエントリに対して、コマンドで指定された引数のアクションが実行されます。

例外は、Annexコマンドです。このコマンドは、既存のグリッドエントリにマッチするものがない場合に、グリッドに新しいグリッドエントリを追加します(予期しない名前の競合を防ぐため)。

列を追加・削除する例

以下の例では、データテーブルにラベル列がない場合にExpungeコマンドによってホバーラベルに追加された最初のエントリを削除し、2つのAnnexコマンドによって新しい行を追加します。Annexを1つだけ指定し、リストのリストでコマンドを指定する方法もあります。

Figure 12.47は、元のホバーラベルと変更後のホバーラベルです。ラベルから「行」が削除され、「タイトル」と「ジャンル」が追加されています。

図12.47 ExpungeコマンドとAnnexコマンドの例 

ExpungeコマンドとAnnexコマンドの例

Figure 12.47にある変更後のホバーラベルは、次のようなスクリプトで作成します。

Names Default To Here( 1 );
 
dt = Open( "$SAMPLE_DATA/Movie Inventory.jmp" );
 
// ベースとなるグラフを作成する
gb = dt << Graph Builder(
        Size( 526, 454 ),
        Show Control Panel( 0 ),
        Variables( X( :年 ), Y( :上演時間 ) ),
        Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) )
    );
 
rpt = gb << Report();
box = rpt[Framebox( 1 )];
box << Set Gridlet(
// 「行」を削除する
      Expunge( {{Matcher( 1 )}} ),
      Annex(
// ホバーラベルに「タイトル」列と「ジャンル」列を追加する
        {{Matcher( "タイトル" ), value( :タイトル[local:_firstRow] )},
         {Matcher( "ジャンル" ), value( :ジャンル[local:_firstRow] )}}
      )
);

Annex(追加)

Annex({matcher, value(<script>), <Click(<script>)>})は、ホバーラベルのグリッドに新しい行を追加します。Annexコマンドは、ホバーラベルエディタの「グリッドレット」パネルにある「追加」タブに該当します。

このコマンドは、3つの引数を取ります。

Matcher: 新しい名前。Matcherで指定する名前は既存の名前と一致してはいけません。

Value: 必須。スクリプトは、ホバーラベル実行コンテキストで評価されます。結果が、新しい行の値として表示されます。詳細は、ホバーラベル実行コンテキストについてを参照してください。

box << Set Gridlet(
       Annex( { "LDL, HDL", value(
       	Char(:LDL[local:_firstRow]) || ", " || Char(:HDL[local:_firstRow])
       ) })
   );

Click: オプション。Clickは、追加したグリッドエントリの値をユーザがクリックすると、ホバーラベル実行コンテキストで評価されます。このオプションは、グラフレットのClick属性と等価です。このオプションを使うと、新しいエントリの値の部分が、クリック可能であることを示すためにリンクスタイル(下線を引いた青色のテキスト)で表示されます。

Expunge(削除)

Expunge({Matcher})は、Matcherにマッチしたものを削除します。Expungeコマンドは、ホバーラベルエディタの「グリッドレット」パネルにある「削除」タブに該当します。

一致するエントリがすべてグリッドから削除されます。

box << Set Gridlet( Expunge( {"年齢"} ) );

名前の変更

Rename({Matcher, Value(<string>)})は、一致したグリッドエントリの名前部分を、指定した値で置換します。Renameコマンドは、ホバーラベルエディタの「グリッドレット」パネルにある「名前の変更」タブに該当します。

box << Set Gridlet( Rename( {Matcher( "名前" ), Value( "学生" )} ), );

表示形式の変更

Reformat({Matcher, <format>})は、Matcherと引数を取ります。この引数は、一致したグリッド行の数値に適用する表示形式を指定します。一致したグリッドエントリに、指定した表示形式が適用されます。

box << Set Gridlet( Reformat( {:"身長(インチ)"n, Format( "指数表現", 10, 4 )} ) );

スタイル

Style({Matcher, <style1>, <style2>, ...})は、Matcherとスタイルの引数を取ります。次のようなスタイルがサポートされています。

Background Color(背景色)

Text Color(テキストの色)

Font(フォント)(フォントファミリ、サイズ、スタイル)

Justification(配置)(左寄せ、中央寄せ、右寄せ)

一致したグリッドエントリに、指定したスタイルが適用されます。

box << Set Gridlet(
	Style(
		{{Matcher( "性別" ), Text Color( "Red" ), Font("メイリオ", 14,
		"太字、下線")}}
	)
);
より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).