還有其他人對列聯表和馬賽克圖的方向感到困擾嗎?我不使用它,但我們的一位 JMP 用戶想要翻轉表格的方向,使其與馬賽克圖相符。發現如果交換 X 和 Y,表格和馬賽克圖都會更新。請參閱下面的腳本來運行範例並並排比較它們。您似乎希望表中的數字與馬賽克圖中的儲存格對齊,以便於查看和引用。我找不到任何先前的討論。看來列聯表無法更改,它是一個 CrossTabBox,不適合更改任何內容。下面的腳本在頂部有解決方法,即對切換 x 和 y 時製作的表格進行克隆,然後將其附加到馬賽克圖。也必須對值排序進行一些處理才能使其保持一致。將會加入到 JMP 願望清單中。我確實在 2018 年 JMP Discovery Summit 上與 EA 實驗室和開發人員進行了討論。
找到一些關於 R 語言的帖子,其中您可以使用 dir() 參數並指定水平和垂直,而 RStudio 中的“count”輸出在方向上保持不變。
# R 馬賽克圖範例 - 改變方向
getwd()
員工 <- read.csv("Products.csv", TRUE, sep = ",",
na.strings = TRUE)
計數 <- 表(員工$EnglishCountryRegionName,
員工$顏色)
數數
mosaicplot(count, main = "國家馬賽克圖",
sub =“按國家/地區劃分的產品顏色”,
xlab =“顏色”,
ylab = "國家",
拉斯 = 1,
目錄 = c("h", "v"),
顏色=“天藍色2”,
邊框=“巧克力”)
// For a contingency table report, swap the x and y
// currently can swap the mosaic plot only
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
myr = Contingency( Y( :Age ), X( :sex ) );
// Have to have a Contingency Analysis report open
// Can add test to make sure it is open in the future
myr = Current Report();
// taking apart CrossTabBox was easier using XML than JSL
mys = myr["Contingency Table"][CrossTabBox(1)] << Get XML;
// get current X role or rows of contingency table
start = Contains(mys,"<CROSSTABBOXROWSLABEL>")+22;
end = Contains(mys,"</CROSSTABBOXROWSLABEL>");
newY = Substr(mys,start,end-start);
// get current Y role or cols of contingency table
start = Contains(mys,"<CROSSTABBOXCOLSLABEL>")+22;
end = Contains(mys,"</CROSSTABBOXCOLSLABEL>");
newX = Substr(mys,start,end-start);
// Recreate same contingency table but with X and Y flipped
// also temporarily use Value Order to match the Mosaic Plot
myValueLabels = Reverse(Associative Array(Column(dt,newX)) << Get Keys);
Column(dt,newX) << Set Property("Value Ordering",myValueLabels);
tempCont = Contingency( Y(Column(dt,newY) ), X(Column(dt,newX) ), Contingency Table );
tempContr = tempCont << Report;
mycopy = tempContr["Contingency Table"][CrossTabBox(1)] << Clone Box;
tempCont << Close Window;
Column(dt,newX) << Delete Property("Value Ordering");
// remove the original contingency table and replace with transpose
myr["Contingency Table"][CrossTabBox(1)] << Delete;
myr["Contingency Table"] << Append(mycopy);
// show original side by side
obj = Contingency( Y( :Age ), X( :sex ) );
Report(obj)["Contingency Table"] << Set Title("Contingency Table - Current output");
myr["Contingency Table"] << Set Title("Contingency Table - Wish List for JMP16");
你好@Vball247 , 謝謝你的建議! 我們已收到您的請求並將予以考慮。
嗨赫格杜斯1。 很好的建議! 但我還必須再做一步。 當我做馬賽克圖時,Y 軸是從 0 到 1 或百分比,但是當我單擊 Y 軸時,最小值、最大值和逆序對我來說是灰色的,沒有選項可供選擇。 我必須選擇“水平馬賽克”,然後執行您的建議,這可以更改一個分類的順序,同時保留累積軸。 最終與下面的表格相符。
Contingency(
Y( :age ),
X( :sex ),
Contingency Table,
Horizontal Mosaic( 1 ), // swap the axes
SendToReport( Dispatch( {"Mosaic Plot"}, "1", ScaleBox, {Reversed Scale} ) ) // reverse the categories to match table
);
有一個更簡單的解決方案。
在馬賽克圖的 Y 軸中,選擇反向軸。
我的請求/願望:使此方向成為應急平台首選項中的一個選項。