顏色代碼前 5 名我想對我的表格進行顏色編碼(以便我製作的所有圖表和圖形都遵循相同的規則)。 但我想讓前 5 個是紅色,中間 15 個是黃色,底部 27 個是綠色。 一定有一種簡單的方法來做到這一點。
作為背景,我擁有 2014-2021 年需要追蹤的各種疾病的所有 CDC 發病率數據。 我需要能夠將美國與任何一個州進行比較,並顯示該州與其他州相比是否處於前 5 名、中間或墊底位置。 在完美的世界中,美國的一排總是會像基準一樣顯示為黑色。 我已附上下面的資料檔。 一種是列中的數據,另一種是堆疊的數據。
我正在使用 JMP 17。
數據探索和視覺化分享和交流成果視窗回覆:顏色代碼前 5 名這是一個小腳本,給出了頂部、中間、底部以及美國分組
它每年都會單獨執行此操作。如果這不是您想要的,那麼可以透過刪除年份引用來輕鬆更改腳本。

Names Default To Here( 1 );
dt = Data Table( "All Items 2014-2021 Stacked" );
dtSum =
// → Data Table( "SummaryData" )
Data Table( "All Items 2014-2021 Stacked" ) << Summary(
Group( :State, :Year ),
Mean( :Data ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "SummaryData" )
);
dtSum << delete rows( dtSum << get rows where( :state == "United States" ) );
// Sort data table
dtSum = Data Table( "SummaryData" ) << Sort(
By( :Year, :"Mean(Data)"n ),
Replace Table,
Order( Ascending, Ascending )
);
DtSum << New Column( "Color Group",
character,
set each value(
If(
Col Cumulative Sum( 1, :Year ) <= 5, "Top",
Col Cumulative Sum( 1, :Year ) <= 20, "Middle",
"Bottom"
)
)
);
Data Table( "All Items 2014-2021 Stacked" ) << Update(
With( Data Table( "SummaryData" ) ),
Match Columns( :State = :State, :Year = :Year )
);
dt:Color Group[dt << get rows where( :Color Group == "" )] = "U.S.";
dt << delete column( :"Mean(Data)"n );
dt:color group << set property( "value colors", {"Bottom" = 20, "Middle" = 41, "Top" = 19, "U.S." = 0} );
dt << Graph Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Variables( X( :State ), Y( :Data ), Color( :Color Group ) ),
Elements( Points( X, Y, Legend( 7 ) ) )
);
回覆:顏色代碼前 5 名這很有幫助。 但是腳本的第一部分,它會產生摘要資料。 N行是什麼意思? 我需要知道每一種病毒是什麼。
回覆:顏色代碼前 5 位N 行列顯示主表中一組存在多少列。 在下面的螢幕截圖中,總結表告訴您 2014 年阿拉巴馬州有 3 行,依此類推。 這確實混合了平均值(數據)列中的不同病毒。

回覆:顏色代碼前 5 名不幸的是,我需要將所有病毒分開。 將每種病毒作為自己的表會更好嗎?
回覆:顏色代碼前 5 位將每種病毒分離到單獨的數據表中是解決該問題的一種方法。然後為每個病毒數據表運行腳本。
也可以將病毒以及州和年份聚合一起添加到我提供的腳本中,並且它將針對每種病毒單獨執行計算。
回覆:顏色代碼前 5 名所以現在我已經完美了。 我還有一個問題。 有沒有辦法將我的資料列和顏色組列組合起來,以便我看到資料列中的資料/數字,但該儲存格中的顏色是顏色組的顏色?
回覆:顏色代碼前 5 名腳本索引提供了以下定義和範例全部大多數函數和訊息都可以在 JSL 中使用。這裡有一些簡單的 JSL 可以滿足您的需要,但是您需要熟悉腳本索引,以便您可以找到自己的答案。這對我們所有人來說都是一個持續的過程。
dt:color group << color cells("green", dt << get rows where(:color group =="Bottom"));
dt:color group << color cells("yellow", dt << get rows where(:color group =="Middle"));
dt:color group << color cells("red", dt << get rows where(:color group =="Top"));
dt:color group << color cells("black", dt << get rows where(:color group =="U.S."));回覆:顏色代碼前 5 名答案可能有點取決於您使用表格(和顏色)的目的。 有純腳本選項,或者您可以互動式地執行此操作:當您的某一列中有值顏色時,選擇該列並轉到行/顏色或按列標記

然後按下選單中的「確定」。

這會將這些顏色設為行狀態

右鍵單擊這些行並按行狀態選擇顏色

現在您擁有了具有這些顏色的所有行。

然後選擇您不想使用該顏色的所有列,右鍵單擊選定的單元格之一並將顏色設為白色

儘管使用此方法和單元格上的顏色,您最終會得到特定顏色作為行上的行狀態(您使用白色來覆蓋行狀態顏色)

JMP 似乎也無法記錄這些操作來為您提供腳本。
編輯:
有些腳本編寫的思路可以從如何使用JSL透過數字列的值來設定文字格式列的顏色漸層?但你的情況有點不同
編輯2:
這是使用腳本為單元格著色的更高級的方法
Names Default To Here(1);
dt = Open("$DOWNLOADS/All Items 2014-2021 Stacked.jmp");
color_property = Column(dt, "Color Group") << Get Property("Value Colors");
values = dt[0, "Color Group"];
For Each({color_prop}, color_property,
value = Arg(color_prop, 1);
color = Arg(color_prop, 2);
color_rows = dt << Get Rows Where(:Color Group == value);
:Data << color cells({color, color_rows});
);
回覆:顏色代碼前 5 名謝謝你!!! 我現在已經完美了!!!
回覆:顏色代碼前 5 名我很高興看到您正在解決問題。透過執行以下操作,確保您完成任務:
- 不要只是將程式碼剪下並貼上到您的應用程式中。確保您花時間研究提供的 JSL 並學習JSL 中的不同項目如何運作。
- 返回您收到的回复,並將為您解決問題的回复標記為解決方案,以便讓未來的讀者盡可能高效地獲得答案。