グラフビルダーで異なる要約統計を持つ重複ヒートマップを作成するBig Class と次のプロットがあるとします:
Graph Builder(
Size( 574, 613 ),
Graph Spacing( 20 ),
Variables(
X( :sex ),
X( :sex ),
Y( :age ),
Color( :height, Summary Statistic( "Min" ) )
),
Elements( Position( 1, 1 ), Heatmap( X, Y, Legend( 4 ) ) ),
Elements( Position( 2, 1 ), Heatmap( X, Y, Legend( 5 ) ) )
)
左のプロットで「平均」要約統計を使用し、右のプロットで「最小」を使用する方法はありますか?
別の Color() 仕様を追加しようとしましたが、JMP 17 では機能しないようです。
データの探索と視覚化Re: グラフビルダーで異なる要約統計を持つ重複ヒートマップを作成する私がしたのは
- テーブル=>概要を使用して、性別と年齢別にグループ化された平均と最小の統計を含む新しいテーブルを作成します。
- テーブル=>スタックを使用して、平均列と最小列を積み重ねます。
- グラフビルダーを実行する

names default to here(1);
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
// Data table summary
// → Data Table( "Summary of Big Class grouped by age, sex" )
Data Table( "Big Class" ) << Summary(
Group( :age, :sex ),
Mean( :height ),
Min( :height ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "stat" ),
output table name( "Summary of Big Class grouped by age, sex" )
);
// Stack data table
// → Data Table( "Stack of Summary of Big Class grouped by age, sex (Mean, Min)" )
Data Table( "Summary of Big Class grouped by age, sex" ) <<
Stack(
columns( :Mean, :Min ),
Output Table( "Stack of Summary of Big Class grouped by age, sex (Mean, Min)" )
);
Graph Builder(
X Group Edge( "Bottom" ),
Variables( X( :sex ), Y( :age ), Group X( :Label ), Color( :Data ) ),
Elements( Heatmap( X, Y, Legend( 4 ) ) )
);
Re: グラフビルダーで異なる要約統計を持つ重複ヒートマップを作成するもう 1 つのオプションは、2 つのグラフ ビルダー レポートを作成し、カスタム レポートの新しいウィンドウに並べて配置することです。グラフのタイトルを変更して、1 つが最小と最大で色分けされていることがわかるようにするといいでしょう。簡単な例を次に示します。
names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
hm1 = expr( dt << Graph Builder(
Size( 235, 613 ),
Show Control Panel( 0 ),
Variables(
X( :sex ),
Y( :age ),
Color( :height, Summary Statistic( "Min" ) )
),
Elements( Heatmap( X, Y, Legend( 1 ) ) ),
));
hm2 = expr( dt << Graph Builder(
Size( 235, 613 ),
Show Control Panel( 0 ),
Variables(
X( :sex ),
Y( :age ),
Color( :height, Summary Statistic( "Max" ) )
),
Elements( Heatmap( X, Y, Legend( 1 ) ) ),
));
new window( "Two Heat Maps",
h list box( hm1, hm2 )
);
Re: グラフビルダーで異なる要約統計を持つ重複ヒートマップを作成するこのソリューションを過剰に設計するリスクはありますが、これを統計のリストに一般化することができます。
names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
statList = { "Mean", "Median", "Mode", "Min", "Max", "Range", "Median", "Std Dev" };
hm_fxn = function( { STAT },
dt << Graph Builder(
Size( 200, 300 ), // Adjust size based on number of heatmaps
Show Control Panel( 0 ),
Variables(
X( :sex ),
Y( :age ),
Color( :height, Summary Statistic( STAT ) )
),
Elements( Heatmap( X, Y, Legend( 1 ) ) ),
SendToReport(
Dispatch( {}, "Graph Builder", OutlineBox,
{Set Title( "Color by " || STAT ), Image Export Display( Normal )}
)
)
)
);
new window( "Heat Maps",
outline box( dt << get name || " Heat Maps",
lub = line up box( n col( 4 ) ) // Adjust n col() for number of heatmaps per row
)
);
for each( { s }, statList,
lub << append( hm_fxn( s ) )
)

Re: グラフビルダーで異なる要約統計を持つ重複ヒートマップを作成する
@BHarris は次のように書いています:別の Color() 仕様を追加しようとしましたが、JMP 17 では機能しないようです。
-> 別の色を追加
JMP 17 (.2) で動作します

dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
Graph Builder(
Size( 574, 613 ),
Summary Statistic( "Median" ),
Graph Spacing( 20 ),
Variables(
X( :sex ),
X( :sex ),
Y( :age ),
Color( :height, Summary Statistic( "N" ) ),
Color( :height, Summary Statistic( "Max" ) )
),
Elements( Position( 1, 1 ), Heatmap( X, Y, Color( 1 ), Legend( 4 ) ) ),
Elements( Position( 2, 1 ), Heatmap( X, Y, Color( 2 ), Legend( 5 ) ) )
);
Re: グラフビルダーで異なる要約統計を持つ重複ヒートマップを作成する素晴らしい、うまくいきました! 色指定を追加したときに、追加の X 変数が抜けていたと思います。GB が UI でこれをサポートしていればよかったのですが、すでに多くの機能が備わっています...
私が探していた最終的なスクリプトは次のとおりです。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Size( 934, 824 ),
Show Title( 1 ),
Graph Spacing( 20 ),
Variables(
X( :sex ),
X( :sex ),
X( :sex ),
Y( :age ),
Color( :height, Summary Statistic( "Min" ) ),
Color( :height, Summary Statistic( "Mean" ) ),
Color( :height, Summary Statistic( "Max" ) )
),
Elements(
Position( 1, 1 ),
Heatmap( X, Y, Color( 1 ), Legend( 1 ), Label( "Label by Value" ) )
),
Elements(
Position( 2, 1 ),
Heatmap( X, Y, Color( 2 ), Legend( 2 ), Label( "Label by Value" ) )
),
Elements(
Position( 3, 1 ),
Heatmap( X, Y, Color( 3 ), Legend( 3 ), Label( "Label by Value" ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( "Age vs. Sex, Colored on Height -- Min, Mean, Max" )}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {1, [0], 2, [-1], 3, [-1]} )}
)
)
)