やあ、
次のスクリプトを使用しています役職スクリプトから作成されたヒートマップを試して展開します。 現在の形式のスクリプトは、すべての列のヒートマップを一緒に実行しますが、個別のヒートマップ PER 列が必要です。 言い換えれば、特定の列の最小値、中間値、最大値を見つけて、その列にのみヒート マップを適用し、次の列に対して同じことを行って続行したいと考えています。
付属品は以下
1. sample_base_table.jmp: これは、抽出元のデータのサンプル セットです。
2. extract_cols.jsl: これは、ヒートマップ スクリプトに使用されるデータを要約するスクリプトです。
3. heatmap.jsl: このスクリプトは、指定された列のヒートマップを実行します
問題:
extract_cols.jsl を実行すると、「Untitled X」という名前の新しいデータテーブルが 4 つ取得されます。 次に、heatmap.jsl を実行すると、最後に作成された Untitled X テーブルのヒート マップしか作成できません。 これがなぜなのかわかりません... デバッガーコードを見ると、「「列」のアクセスまたは評価で列が見つかりませんでした」と表示されます。 ただし、使用されている列「Median(Values, Mango)」を印刷すると表示されるため、何が起こっているのかわかりません (下の出力図を参照)。

改善点/今後の課題:
理想的には、最後に作成されたデータ テーブルのみが更新される理由を突き止めた後、果物のこれら 4 つのヒートマップ列をすべて、国と果物の情報も含まれる 1 つのデータ テーブルに連結したいと考えています。 つまり、4 (32x3) テーブルを生成しており、1 (6x32) テーブル (4 つのフルーツ ヒートマップ + 国列 + 場所列) を生成したいと考えています。 現在、私が行っている方法は、JMP Query Builder を使用して列の連結を行うことです。
trans:theList にカーソルを合わせるか、指定した場合
show(trans:theList);
スクリプトでは、リストの内容が表示されます。表示されるのは 5 つのエントリです。最初のものは
Data Table( 'the name of your initial data table");
その後の各エントリは、Apple、Banana、Mango、Orange によるデータ テーブル フィルターへのポインターになります。
データは含まれず、データへのポインタのみです。列名などは、実際のデータ テーブルから取得されます。
JMPドキュメンテーション ライブラリの[ヘルプ]プルダウン メニューから入手できるスクリプト ガイドを、時間をかけて読む必要があります。
それを修正してくれてありがとう!
したがって、ヒートマップ スクリプトを実行すると、以下のメッセージが表示されます。 私が変わるとき
dt= trans:thelist[5]
それは機能しますが、最後に作成されたデータテーブルに対してのみです。 また、この名前空間の概念は私にとって新しいものです。 これが何をしているのかを要約してみましょう。私の理解が正しいかどうか確認できますか? そのため、スクリプトで名前空間を使用することにより、すべてのデータ テーブル名 (さらに重要なのはそのデータ テーブルの列名と値) をリスト trans に保存し、それをヒートマップ スクリプトで呼び出すことができます。

私のエラー、変更
insert into(theList,dt);
に
insert into(trans:theList,dt);
theList は存在しません......しかし、trans:theList は存在します
入力していただきありがとうございます!
提供された更新された extract_cols スクリプトを実行すると、L 値アクセスに関する次のエラー メッセージが表示されます...

指定しています
Names Default To Here( 1 );
これにより、その特定のスクリプト用に別のメモリ名前空間が作成されます。つまり、extract_cols スクリプトには、"fruit" という名前のリストがあります。ヒートマップスクリプトで指定した場合
myFruit = fruit[1];
ヒートマップ スクリプトは、フルーツと呼ばれる変数について何も知りません。
ヒートマップ スクリプトで、変数 "dt" を現在のデータ テーブルに等しく設定します。あなたの説明から、extract_cols スクリプトを実行した直後に headmap スクリプトを実行しています。JMP では常に、現在アクティブなデータ テーブルであるデータ テーブルは 1 つだけです。したがって、指定すると
dt = Current Data Table();
ヒートマップ スクリプトは現在アクティブなデータ テーブルを取得します。これは、extract_cols スクリプトで作成した最後のデータ テーブルになります。
元のデータ テーブル参照を 2 番目のスクリプトに渡す必要があり、場合によっては他の 4 つのデータ テーブル参照を渡す必要がある場合、これを行う 1 つの方法は、別の名前空間を作成し、参照をその名前空間に配置することです。スクリプトを変更すると、名前空間が作成され、データ テーブル参照がそこに配置されます。
Names Default To Here( 1 );
Clear Symbols();
dt = Current Data Table();
if(isnamespace("trans")==0, trans = new namespace("trans"));
trans:theList = {};
insert into(theList,dt);
fruit = {"Apple","Banana","Mango","Orange"};
For(i = 1, i <= N Items(fruit), i++,
obj = dt << Tabulate(
Set Format( Uniform Format( 10, 0 ) ),
Add Table(
Column Table(
Statistics( Median ),
Grouping Columns( :fruits ),
Analysis Columns( :Values )
),
Row Table( Grouping Columns( :Countries, :locations ) )
),
Local Data Filter(
Add Filter(
columns( :fruits),
Where( :fruits == fruit[i] ),
Display( :fruits, N Items( 14 ) )
)
)
);
trans:theList[i+1] = obj<< make into data table;
Current Report() << Close Window
);
次に、ヒートマップ スクリプトで名前空間を参照して、名前空間に保存されたプライマリ テーブル参照または任意のデータ テーブル参照を取得できます。
Names Default To Here( 1 );
Clear Symbols();
dt = trans:thelist[1];
dt << Begin Data Update;
///////////////////////////////////
// Setting Variables for script ///
//rev_scale = "Reverse Scale";
rev_scale =0;
mean_median = 1; //mean=0, median=1
print(mean_median);
///////////////////////////////////
//gets all columns that are continous and stores that in a list as strings.
colList = dt << get column names( continuous, string );
print(colList);
// Create a temporary subset where the columns are the column list, selects all rows,
// invisible makes it so you don't see the datatable on screen since it is temporary
dtsub = dt << subset(columns(colList), selected rows(0),invisible);
// Move the data into a matrix this will be used later to get min, max, median|mean
allData = dtsub << get as matrix;
// Close the no longer needed temporary data table
close(dtsub, nosave);
// Calculate the statistics across the full data matrix
myMax = Maximum(allData);
myMin = Minimum(allData);
if(mean_median == 0,
myMid = Mean(allData),
myMid = Median(allData)
);
print(myMax);
print(myMin);
print(myMid);
print(colList);
// Run for loop over data table with the min, max and median|mean calculated from above
// gradient color scheme needs to be set.
if(rev_scale == 1,
For( i = 1, i <= N Items( colList ), i++,
Eval(
Substitute(
Expr(
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
)
);
);
,
For( i = 1, i <= N Items( colList ), i++,
Eval(
Substitute(
Expr(
Column( __col__ ) <<
//Column( colList[i] ) <<
set property(
"color gradient",
{"Green Yellow Red",
Range( {__Max__, __Min__, __Mid__} )}
) << Color Cell by Value( 1 );
),
Expr( __col__ ), colList[i],
Expr( __Max__ ), myMax,
Expr( __Min__ ), myMin,
Expr( __Mid__ ), myMid
)
);
);
);