データテーブルにヒートマップを作成し、スクリプトを使用して色のグラデーションを更新するこんにちは、
データテーブルからヒートマップとしてプロットしたいデータがたくさんあります。 サンプルデータテーブルの画像と、データテーブルにヒートマップを作成するために行う手順の画像を以下に添付しました。 次の手順に従います。
- tabulateを使用した後にデータテーブルを取得する
- すべての列をスタックします(「type」を除く)。 次に、データセット全体の要約を実行して、最小値、中央値、および最大値を見つけます。
- ステップ2から最小値、中央値、最大値を取得し、それらをカラーグラデーション値に入れます。
これらの手順を実行した後のデータテーブルの結果を以下に示します。 現在、ステップ3を手動で実行しており、概要の後に取得した値をカラーグラデーション値に入力します。 スクリプトを使用してSummaryデータテーブルから値(最小、中央値、最大)を取得し、それをカラーグラデーションに入力する方法はありますか?
サンプルデータセットも添付しました。


データ表スクリプティングRe:データテーブルにヒートマップを作成し、スクリプトで色のグラデーションを更新するこれがカラーグラデーションを設定するJSLです
names default to here(1);
dt=current data table();
dt:"Group:0, test:A"n << set property("color gradient",{"Green Yellow Red", Range(
{-142.439058836207, -42.6065023706896, -97.9221899694684}
)});
必要なリストに値を挿入する最も簡単な方法は、以下のようなコードを使用することです。
Max = -142.439058836207;
Min = -42.6065023706896;
Mid = -97.9221899694684;<BR />
Eval(
Substitute(
Expr(
dt:"Group:0, test:A"n << set property(
"color gradient",
{"Green Yellow Red", Range( {__Max__, __Min__, __Mid__} )}
);
),
Expr( __Max__ ), Max,
Expr( __Min__ ), Min,
Expr( __Mid__ ), Mid
)
);Re:データテーブルにヒートマップを作成し、スクリプトで色のグラデーションを更新する入力ありがとうございます! 私はあなたのスクリプトを良い出発点として使用していますが、それをより動的にすることを望んでいました。
- したがって、スクリプトでは、max、min、midを手動で値に設定しますが、画像のステップ2の出力サマリーテーブルでそれらを設定する方法はあります。 基本的に、このmax、min、midはGroup:0 testのスコープ内にあります。AIはテーブル全体のスコープmax、min、midを取得したいと考えています。
- スクリプトにColorCell by Value(1)を追加する必要があり、逆スケールも設定しようとしていて、これを行う方法についてエラーメッセージが表示されていますか?
- また、すべての列でカラーグラデーションを実行するには、送信したコードの外側でforループを実行する必要があると想定しても安全ですか? または、これを行う別の方法はありますか?
names default to here(1);
dt=current data table();
dt:"Group:0, test:A" << set property("color gradient",{"Green Yellow Red", Range(
{-142.439058836207, -42.6065023706896, -97.9221899694684}
)});
Max = -142.439058836207;
Min = -42.6065023706896;
Mid = -97.9221899694684;
Eval(
Substitute(
Expr(
dt:"Group:0, test:A"n << set property(
"color gradient",
{"Green Yellow Red", Range( {__Max__, __Min__, __Mid__} )},
)
:dt << Color Cell by Value( 1 );
),
Expr( __Max__ ), Max,
Expr( __Min__ ), Min,
Expr( __Mid__ ), Mid
)
);Re:データテーブルにヒートマップを作成し、スクリプトで色のグラデーションを更新するこれは、ビッグクラスのサンプルデータテーブルの列の色付けを自動化する例です。このスクリプトから分岐して、データを処理できるようにする必要があります
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
colList = dt << get column names( continuous, string );
For( i = 1, i <= N Items( colList ), i++,
Eval(
Substitute(
Expr(
Summarize(
dt,
myMax = Max( As Column( __col__ ) ),
myMin = Min( As Column( __col__ ) ),
myMid = Mean( As Column( __col__ ) )
);
Column( __col__ ) <<
set property(
"color gradient",
{"Green Yellow Red",
Range( {__Max__, __Min__, __Mid__} ), "Reverse Scale"}
) << Color Cell by Value( 1 );
),
Expr( __col__ ), colList[i],
Expr( __Max__ ), myMax,
Expr( __Min__ ), myMin,
Expr( __Mid__ ), myMid
)
)
);Re:データテーブルにヒートマップを作成し、スクリプトで色のグラデーションを更新する(大きなクラスのデータセットを使用して)スクリプトをそのまま実行すると、スクリプトがクラッシュし、次のメッセージが表示されます。
Name Unresolved: myMax in access or evaluation of 'myMax' , myMax/*###*/
at line 25 in Script 4.jsl