Codice colore Top 5Vorrei codificare a colori la mia tabella (in modo che tutte le tabelle e i grafici che creo seguano lo stesso). Ma voglio farlo in modo che i primi 5 siano rossi, i 15 centrali siano gialli e gli ultimi 27 siano verdi. Deve esserci un modo semplice per farlo.
Per contestualizzare, ho tutti i dati sui tassi del CDC per varie malattie che devo monitorare per il periodo 2014-2021. Devo essere in grado di confrontare gli Stati Uniti con qualsiasi stato e mostrare se quello stato è tra i primi 5, al centro o in fondo, rispetto ad altri stati. In un mondo perfetto, la riga degli Stati Uniti apparirebbe sempre nera come punto di riferimento. Ho allegato i file di dati di seguito. Uno è i dati in colonne, l'altro li ha impilati.
Sto usando JMP 17.
Esplorazione e visualizzazione dei datiCondivisione e comunicazione dei risultatifinestreRe: Codice colore Top 5Ecco un piccolo script che fornisce i raggruppamenti in alto, al centro e in basso e negli Stati Uniti
Lo fa separatamente per ogni anno.Se non è quello che desideri, la sceneggiatura può essere facilmente modificata eliminando i riferimenti all'anno.

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 ) ) )
);
Re: Codice colore Top 5Questo aiuta molto. Ma la prima parte del tuo script, dove genera i dati di riepilogo. Cosa significa N righe? Devo sapere quale virus è ciascuno.
Re: Codice colore Top 5La colonna N righe mostra quante colonne esistono per un gruppo nella tabella principale. Nello screenshot seguente, la tabella di riepilogo indica che ci sono 3 righe per l'Alabama nel 2014 e così via. Questo mescola i diversi virus nella colonna Media (dati).

Re: Codice colore Top 5Sfortunatamente, ho bisogno che tutti i virus siano separati. Sarebbe meglio avere ogni virus come propria tabella?
Re: Codice colore Top 5Separare ciascun virus in tabelle di dati separate sarebbe un modo per gestire il problema.Quindi eseguire lo script per ciascuna tabella di dati sui virus.
Sarebbe anche possibile aggiungere semplicemente Virus nello script che ho fornito, insieme all'aggregazione Stato e Anno, ed eseguirebbe i calcoli separatamente per ciascun virus.
Re: Codice colore Top 5Quindi ora che ce l'ho perfetta. Ho un'altra domanda. Esiste un modo per combinare la mia colonna di dati e la colonna del mio gruppo di colori in modo da vedere i dati/numeri nella colonna di dati, ma il colore in quella cella è quello del gruppo di colori?
Re: Codice colore Top 5Lo Scripting Index fornisce definizioni ed esempi di Tutto la maggior parte delle funzioni e dei messaggi che possono essere utilizzati in JSL.Ecco un semplice pezzo di JSL per fare ciò di cui hai bisogno, tuttavia, devi familiarizzare con lo Scripting Index in modo da poter scoprire le tue risposte.Questo è un processo continuo per tutti noi.
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."));Re: Codice colore Top 5La risposta potrebbe dipendere un po' dallo scopo per cui stai utilizzando la tabella (e i colori). Esistono opzioni di puro scripting oppure puoi farlo in modo interattivo: quando hai Colori valore in una delle colonne, seleziona quella colonna e vai su Righe/Colore o Segna per colonna

quindi premere OK dal menu.

Ciò imposterà questi colori come stati di riga

Fare clic con il tasto destro su quelle righe e selezionare il colore in base allo stato della riga

ora hai tutte le righe con quei colori.

Quindi seleziona tutte le colonne che non desideri abbiano quel colore, fai clic con il pulsante destro del mouse su una delle celle selezionate e rendi il colore bianco

Con questo metodo ti ritroverai con colori specifici come stati di riga su righe e colore sulle celle (usi il bianco per sovrascrivere il colore dello stato di riga)

Sembra anche che JMP non possa registrare queste azioni per fornirti uno script.
Modificare:
Alcune idee per lo scripting possono essere viste da Come utilizzare JSL per impostare il gradiente di colore di una colonna in formato testo in base al valore di una colonna numerica?ma la tua situazione è un po' diversa
Modifica2:
Ecco un metodo un po' più avanzato per colorare le celle utilizzando lo scripting
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});
);
Re: Codice colore Top 5Grazie!!! ora ce l'ho perfetta!!!
Re: Codice colore Top 5Sono felice di vedere che stai risolvendo il problema.Assicurati di completare l'attività effettuando le seguenti operazioni:
- Non limitarti a tagliare e incollare il codice nella tua applicazione.Assicurati di prenderti il tempo per studiare il JSL fornito e Imparare come funzionano i diversi elementi all'interno del JSL.
- Torna alle risposte che hai ricevuto e contrassegna quelle che hanno risolto il problema per te come SOLUZIONE per aggiungere futuri lettori e ottenere la risposta nel modo più efficiente possibile.