在數據表上創建熱圖並使用腳本更新顏色漸變你好,
我有很多數據想從數據表中繪製為熱圖。 我在下面附有示例數據表圖像的圖像,以及在數據表上創建熱圖的步驟。 它遵循以下步驟:
- 使用製表後獲取數據表
- 堆疊所有列(“類型”除外)。 然後對整個數據集進行匯總,以找到最小值,中位數和最大值。
- 從步驟2中獲取最小值,中值和最大值,然後將它們放入顏色漸變值中。
運行這些步驟後,數據表的結果如下所示。 目前,我手動執行第3步,在“摘要”中輸入的任何值都會輸入到顏色漸變值中。 是否可以使用腳本從Summary數據表中獲取值(最小值,中位數,最大值)並將其輸入到顏色漸變中?
我還附加了樣本數據集。


數據表腳本編寫回复:在數據表上創建熱圖並使用腳本更新顏色漸變這是將設置顏色漸變的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
)
);回复:在數據表上創建熱圖並使用腳本更新顏色漸變感謝您的輸入! 我將您的腳本用作一個很好的起點,但我希望使其更具動態性。
- 因此,在腳本中,您可以手動將max,min和mid設置為值,從而可以通過圖像的step2中的輸出摘要表來設置它們。 基本上,此最大,最小和中值在Group:0測試的範圍內:AI希望獲取整個表的最大,最小和中值範圍。
- 我必須將按值(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
)
);回复:在數據表上創建熱圖並使用腳本更新顏色漸變這是一個自動執行Big Class示例數據表的列著色的示例。您應該能夠從該腳本中分支出來,以使其能夠處理您的數據
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
)
)
);回复:在數據表上創建熱圖並使用腳本更新顏色漸變當我按原樣運行您的腳本(使用大類數據集)時,它崩潰了,我得到以下消息:
Name Unresolved: myMax in access or evaluation of 'myMax' , myMax/*###*/
at line 25 in Script 4.jsl
回复:在數據表上創建熱圖並使用腳本更新顏色漸變我的錯誤...在編寫腳本時,myMax等的初始值從以前的執行中繼承了下來。下面是一個修復
Names Default To Here( 1 );
Clear Symbols();
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( __col__ ),
myMin = Min( __col__ ),
myMid = Mean( __col__ )
)
),
Expr( __col__ ), 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
)
);
);