在圖形生成器中獲取分組(面板)計數以檢查可視化是否合理所以我寫了一點 JSL,它能夠獲取數據表並提出圖表建議。 它檢查唯一值的數量、列數據類型和列名稱,以評估哪個圖表最合適。
我遇到的一個問題是當它使用 Page、Group X、Group Y 和/或 Wrap 時,結果面板中的數據點並不多。 下面是一個使用 Big Class 的愚蠢示例。顯然,名稱是一個糟糕的分組變量,因為圖表的每個面板只包含一個點。

一旦我的代碼選擇了潛在的可視化,檢查佈局是否主要包含數據稀疏/空的面板的最佳方法是什麼?
- 因為我知道我的變量是如何相關的,所以我可以使用製表構建一個表,創建一個隱藏數據表,創建一個矩陣,然後檢查矩陣的稀疏性。 這似乎很囉嗦。
- 我需要計數,我認為使用不創建表的 JSL summarise() 函數(在 JMP 12 中)是不可能的。
- 有沒有一種優雅的方法來構建計數矩陣?
- 通常,代碼會為數量最多的列表(X、Y 或圖例)中的每個項目建議三個圖表,因此我希望盡可能避免創建表格。
謝謝,
斯蒂芬
回复:在圖形生成器中獲取分組(面板)計數以檢查可視化是否合理原來有一個 JMP 插件可以將所有字符列轉換為數字. 感謝@M_Anderson指出來.
這使得使用 summarise() 變得非常容易。
回复:在圖形生成器中獲取分組(面板)計數以檢查可視化是否合理如果您的所有分組變量都是數字,它會更快,因為匯總將能夠快速完成計數工作。 但這對數據和/或用戶有很大的限制。 您可以將匯總函數調用轉換為“匯總”平台,並創建可以處理數字和字符列的表。 你可以做一些時間測試,看看是否可行。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\car physical data.jmp" );
dtsumm=dt << Summary(private,
Group( :type),
N( :type ),
Freq( "None" ),
Weight( "None" )
);
show(dtsumm:type<<GET values=""></GET>
回复:在圖形生成器中獲取分組(面板)計數以檢查可視化是否合理謝謝你的例子。 如果我有一個 Y 組和一個 X 組(也可能是 X)作為字符,那麼我需要嵌套三個 for 循環嗎? 由於數據表的大小未知,這很快成為將 JMP 捆綁在循環中的一種方式(用戶可能會請求 30 個圖表,所有這些圖表都需要面板矩陣計算 - 我已將程序設置為僅顯示前 30 個建議) .
也許這是使用汽車物理數據的更好示例,我希望的是 3x5 矩陣或 15 項列表。

為了充分利用 summarise(),我是否最好將字符列重新編碼為數字? 可能比 for 循環更快/更整潔?
回复:在圖形生成器中獲取分組(面板)計數以檢查可視化是否合理總結才是王道。 它不能對字符列進行計數,但它可以獲取分組值,您可以從中獲取計數。 請參閱下面的腳本
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
// Numeric Column
dt = Open( "$SAMPLE_DATA\big class.jmp" );
Summarize( dt, bygroup = by( :age ), counts = Count( :age ) );
Show( "Numeric Column", bygroup, counts );
// Character Column
Summarize( dt, bygroup = by( :sex ) );
counts = {};
For( i = 1, i <= N Items( bygroup ), i++,
Insert Into( counts, N Rows( dt << get rows where( :sex == bygroup[i] ) ) )
);
Show( "Character Column", bygroup, counts );