Code couleur Top 5Je souhaite coder par couleur mon tableau (afin que tous les tableaux et graphiques que je réalise suivent le même). Mais je veux faire en sorte que les 5 premiers soient rouges, les 15 du milieu soient jaunes et les 27 derniers soient verts. Il doit y avoir un moyen simple de procéder.
Pour le contexte, j'ai toutes les données de taux du CDC pour diverses maladies que je dois suivre pour 2014-2021. Je dois être capable de comparer les États-Unis à n’importe lequel des États et de montrer si cet État se classe parmi les 5 premiers, au milieu ou en bas, par rapport aux autres États. Dans un monde parfait, la seule ligne des États-Unis apparaîtrait toujours aussi noire que la référence. J'ai joint les fichiers de données ci-dessous. L’un contient les données en colonnes, l’autre les empile.
J'utilise JMP 17.
Exploration et visualisation des donnéesPartager et communiquer les résultatsles fenêtresRe: Code couleur Top 5Voici un petit script qui donne les regroupements haut, milieu et bas, et US
Il le fait séparément pour chaque année.Si ce n'est pas ce que vous souhaitez, le script peut facilement être modifié en supprimant les références de l'année.

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: Code couleur Top 5Cela aide beaucoup. Mais la première partie de votre script, où il génère les données récapitulatives. Que signifie N lignes ? J'ai besoin de savoir de quel virus il s'agit.
Re: Code couleur Top 5La colonne N lignes vous montre combien de colonnes existent pour un groupe dans votre table principale. Dans la capture d'écran ci-dessous, le tableau récapitulatif vous indique qu'il y a 3 lignes pour l'Alabama en 2014, et ainsi de suite. Cela mélange les différents virus dans la colonne Mean(Data).

Re: Code couleur Top 5Malheureusement, j'ai besoin de séparer tous les virus. Est-ce que je ferais mieux d'avoir chaque virus comme sa propre table ?
Re: Code couleur Top 5Séparer chaque virus dans des tables de données distinctes serait une façon de résoudre le problème.Exécutez ensuite le script pour chaque table de données virales.
Il serait également possible d'ajouter simplement Virus dans le script que j'ai fourni, ainsi que l'agrégation État et Année, et il effectuerait les calculs séparément pour chaque virus.
Re: Code couleur Top 5Alors maintenant que je l’ai parfait. J'ai une autre question. Existe-t-il un moyen de combiner ma colonne de données et ma colonne de groupe de couleurs afin que je voie les données/numéros dans la colonne de données, mais la couleur de cette cellule est celle du groupe de couleurs ?
Re: Code couleur Top 5L'Index des scripts fournit des définitions et des exemples pour tous la plupart des fonctions et messages pouvant être utilisés en JSL.Voici un simple morceau de JSL pour faire ce dont vous avez besoin, cependant, vous devez vous familiariser avec l'index de script afin de pouvoir découvrir vos propres réponses.C'est un processus continu pour nous tous.
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: Code couleur Top 5La réponse peut dépendre un peu de l'utilisation que vous faites du tableau (et des couleurs). Il existe des options de script pur ou vous pouvez le faire de manière interactive : lorsque vous avez des couleurs de valeur dans l'une de vos colonnes, sélectionnez cette colonne et accédez à Lignes/Couleur ou Marquer par colonne.

puis appuyez sur OK dans le menu.

Cela définira ces couleurs comme états de ligne

Faites un clic droit sur ces lignes et sélectionnez la couleur par état de ligne

maintenant vous avez toutes les lignes avec ces couleurs.

Sélectionnez ensuite toutes les colonnes pour lesquelles vous ne souhaitez pas avoir cette couleur, faites un clic droit sur l'une des cellules sélectionnées et rendez la couleur blanche.

Vous vous retrouverez avec des couleurs spécifiques comme états de ligne sur les lignes, mais avec cette méthode et cette couleur sur vos cellules (vous utilisez du blanc pour écraser la couleur de l'état de la ligne).

Il semble également que JMP ne puisse pas enregistrer ces actions pour vous fournir un script.
Modifier:
Quelques idées de script peuvent être vues dans Comment utiliser JSL pour définir le dégradé de couleurs d'une colonne au format texte par la valeur d'une colonne numérique ?mais ta situation est un peu différente
Edit2 :
Voici une méthode un peu plus avancée pour colorer les cellules à l'aide de scripts
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: Code couleur Top 5Merci!!! Je l'ai parfait maintenant !!!
Re: Code couleur Top 5Je suis heureux de voir que vous résolvez le problème.Assurez-vous de terminer votre tâche en procédant comme suit :
- Ne vous contentez pas de copier et coller le code dans votre application.Assurez-vous de prendre le temps d'étudier le JSL fourni et apprendre comment fonctionnent les différents éléments du JSL.
- Revenez aux réponses que vous avez reçues et marquez celles qui ont résolu le problème pour vous comme étant une SOLUTION pour ajouter les futurs lecteurs afin d'obtenir la réponse aussi efficacement que possible.