使用 Mousetrap() 的嵌套圖表向下鑽取我有一個用例來構建一個具有向下鑽取功能的圖表。
用戶將單擊圖表上的一個點,然後使用 Mousetrap() 函數運行一個腳本,該腳本將彈出一個新窗口,其中包含另一個圖表以及一些更詳細的下鑽信息。
然後我想支持從第一個彈出窗口向下鑽取的額外級別。
我將在附加腳本中使用 BigClass 數據集通過一個簡單示例進行說明。
腳本中的註釋突出了問題:只有一個 mouse-trap() 函數調用,第一個向下鑽取工作。
但是,如果我添加第二個鼠標陷阱,特別是將其添加到將由第一次向下鑽取生成的圖形中,則會發生第二次向下鑽取操作應用於第一次鼠標單擊,這齣乎意料.
不確定是否可以像這樣使用 MouseTrap() ?
d
回复:嵌套圖表使用捕鼠器向下鑽取()@馬克貝利感謝您參考 graphlets!
@tsl所以您想跨多個級別向下鑽取。 非常好,這是使用數據可視化本身縮小關注範圍來了解數據的好方法。
讓我們數一數您可以在 JMP15 中使用 graphlet 執行此操作的方法。 此新功能遵循“瓷器 + 管道”架構,這意味著有預定義的、易於使用的方法來完成標準行為,構建在編程 (JSL) API 之上,您還可以訪問該 API 以實現自定義案例。 您描述的場景可以使用兩種不同的“瓷器”或點擊式方法來實現。
如果您的注意力集中在一個特定的、單一的測量值上——比如高度——您可以使用像直方圖這樣的 Graphlet 預設。 創建基線圖後,右鍵單擊圖背景以訪問新的“懸停標籤”菜單。 從那裡你會看到預設選項

Graphlet 預設將創建指定可視化類型的 Graphlet,從基線圖中選擇的變量派生角色映射。 由於基線圖顯示高度變量的計數,直方圖 graphlet 預設將自動顯示每個給定條的變量分佈。但是每個條形已經過濾到一個單一的高度值,所以這不是一個有趣的分佈。 假設我們的基線是直方圖;直方圖預設將顯示每個 bin 上值的分佈:

請注意懸停標籤縮略圖如何像圖形預覽一樣工作。 如果您繼續並單擊縮略圖,它將在新窗口中啟動等效圖形。 這個新圖表被向下過濾以僅包含與懸停在視覺元素(在本例中為 60-62 bin)對應的行,從而實現向下鑽取操作。 過濾操作是使用折疊的本地數據過濾器實現的,使其能夠適應不相關的選擇更改,並允許通過過濾器設置的更改進行進一步探索。

Graphlet Presets 的另一個特點是它們被預先配置為遞歸的,以支持高級的向下鑽取場景。 因此,您可以繼續與新直方圖中的 bin 進行交互。 您將看到您也可以向下鑽取它們:

現在附加到頁面的 .jsl 示例有一個更複雜的向下鑽取場景,其中可視化類型和角色分配被選擇為每個向下鑽取級別的特定值:
* 0級(基線):高度值計數
* 級別 1:按性別劃分的體重箱線圖
* 級別 2:日誌中顯示的行詳細信息
這種級別的定制仍然可以使用不同類型的“瓷器”來完成:Paste Graphlet 命令。 此命令允許用戶“堆疊”graphlet 定義,這些定義將在用戶向下鑽取每個級別的可視元素時使用。
因此,在創建基線圖之後,繼續創建代表每個所需向下鑽取級別的圖。 不用擔心過濾 - 與前面的情況一樣,過濾會自動為您完成。 然後 - 從最後的級別 - 將其腳本複製到剪貼板:

然後移動到前面的圖表,然後粘貼(腳本作為)graphlet:

在上圖中,我們將 1 級向下鑽取圖(按性別劃分的權重小圖)粘貼到基線圖中。 結果:

由於定義了此場景,因此不需要 2 級粘貼 graphlet。 顯示懸停視覺元素的行值已經是懸停標籤的默認行為。 將鼠標懸停在第二個箱形圖上後,我們將在第二級向下鑽取中看到以下內容:

通過右鍵單擊懸停標籤,用戶可以復制其內容、子集數據或進一步更改懸停標籤配置。
我希望這可以幫到你。 對於分類鑽取示例,請檢查以下問題的答案https://community.jmp.com/t5/Discussions/drill-down-in-a-graph-hierarchy/mp/11702
有關懸停標籤自定義的更多信息,請訪問: https://www.jmp.com/support/help/en/15.0/index.shtml#page/jmp/add-hover-graphs.shtml#
關於 graphlet 的信息具體位於: https://www.jmp.com/support/help/en/15.0/index.shtml#page/jmp/add-graphs-or-images-to-hover-labels.s...
回复:嵌套圖表使用捕鼠器向下鑽取()謝謝 ! 極好的建議! 它有效,正如您所評論的那樣,通過分離成函數來編寫更好的代碼。 我能夠將其合併到我的“真實世界”用例中,其中我實際上有 4 個級別的漸進向下鑽取,因此使用函數使其更具可讀性回复:嵌套圖表使用捕鼠器向下鑽取()好主意! 將您的代碼移動到一個函數中並且它可以工作:
makesubset = Function( {_x},
{TestWin}, // local variables
dt << select where( :height == _x );
TestWin = New Window( "Drill Down Window",
dt << GraphBuilder( Size( 534, 448 ), Show Control Panel( 0 ),
Where( Selected() ), Variables( X( :sex ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 4 ) ), Box Plot( X, Y, Legend( 5 ) ) )
)
);
TestWin[FrameBox( 1 )] << add graphics script(
Mousetrap(
_x2 = Round( X, 0 );
Show( _x2 );
)
);
);
dt = Open( "$sample_data/big class.jmp" );
dt << Graph Builder( Size( 527, 454 ), Show Control Panel( 0 ),
Variables( X( :height ) ), Elements( Bar( X, Legend( 6 ) ) ),
SendToReport( Dispatch( {}, "Graph Builder", FrameBox,
{Add Graphics Script( 2, Description( "Script" ),
Mousetrap(
_x = Round( X, 0 );
makesubset( _x );
)
), Grid Line Order( 1 ), Reference Line Order( 3 )}
)
)
);它的行為方式與您描述的方式相同,因為 Mousetrap 函數並不像其他函數那樣真正執行。 <
我懷疑它保留了最後一個。 掃描不會跟隨到函數調用中,函數調用可能會使您的 JSL 更易於閱讀和維護。
@EvanMcCorkle是的,它在捕鼠器中發現捕鼠器似乎很奇怪。
回复:嵌套圖表使用捕鼠器向下鑽取()JMP 15 正是為此目的引入了“懸停標籤”。 有三個方面可以協同工作:graphlets、textlets 和 gridlets。
請參閱幫助 > JMP 文檔庫 > 腳本指南 > 第 9 章:JMP 報表,第 512 頁。 有很多解釋和示例可以幫助您了解如何實施向下鑽取行為。