Superposer le tracé personnaliser la couleur (couleurs des lignes)Pour tracer des tracés de superposition, j'ai un JMP DataTable où j'ai programmé par code couleur les lignes pour chaque appareil. (grande table avec des lignes de 100 000) La couleur s'affiche correctement lorsque je trace au tracé de superposition X vs Y (les points sont des couleurs de ligne).Il y a quelques milliers de points pour chaque appareil et toutes les données de chaque appareil ont toujours la même couleur de ligne.
Lorsque je regroupe mon tracé par périphérique, JMP attribue son propre jeu de couleurs, et non la couleur de mes lignes. (Pas ce que je veux dans ce cas)
Pour mes tracés, je ne veux pas afficher les points, je veux plutôt connecter les points avec une ligne, et je veux que la couleur du connecteur soit la couleur de mes lignes.
JMP fait de la couleur du connecteur une couleur constante, pas la couleur de mes lignes. La seule façon d'obtenir une couleur de connecteur différente est de regrouper par appareil. Mais si je groupe par appareil, les couleurs ne correspondent plus à la couleur de mes lignes !
Mon DataTable a des colonnes pour les valeurs R, G, B afin que je puisse l'utiliser, mais je n'étais pas sûr de quoi faire?
BTW Je rencontre également des problèmes similaires en utilisant GraphBuilder pour cette tâche…
Toute suggestion serait appréciée!
Merci,
Chris
Re : Superposer le tracé personnaliser la couleur (couleurs des lignes)Merci! Cela a fonctionné pour moi.
Re : Superposer le tracé personnaliser la couleur (couleurs des lignes)J'ai posé une question similaire il y a quelques années. Voici le fil :
https://community.jmp.com/t5/Discussions/How-to-create-a-legend-in-Graph-Builder-which-preserves-row/mp/7983#M7977
Re : Superposer le tracé personnaliser la couleur (couleurs des lignes)__fList__ et __mList__ sont des espaces réservés dans la fonction Substitute().Voir
Aide==Index des scripts==>Fonctions==>Remplacer
pour définition et exemple(s)
Re : Superposer le tracé personnaliser la couleur (couleurs des lignes)Jim,
Pouvez-vous définir
__fListe__
et
__mListe__
Les variables sont utilisées dans votre exemple de code mais ne sont pas initialisées/définies ?
Merci,
ChrisRe : Superposer le tracé personnaliser la couleur (couleurs des lignes)Chris,
Soyez rassuré que vous utilisez JSL pour faire ce que vous essayez de faire.JSL possède toutes les fonctions et capacités pour créer votre script générique.
Re : Superposer le tracé personnaliser la couleur (couleurs des lignes)Jim, merci pour le code, je pense avoir compris. J'apprécie vraiment les exemples de syntaxe!Maintenant, pour mon cas, je devrai le généraliser (je devrai créer une chaîne contenant tous les bacs, qui ne seront connus qu'au moment de l'exécution),
Je suppose que __fList__ est juste une liste de valeurs de la colonne d'intérêt que vous voulez une couleur particulière.Donc, je suppose que cette expression pourrait s'agrandir, et ma liste peut être de 1000 éléments, et je pourrais avoir plusieurs bacs de couleurs différentes dans l'expression.
J'aurai peut-être le temps d'essayer cela plus tard dans la journée, je vous ferai savoir comment ça se passe.
Le défi le plus difficile que je vois est de construire l'expression ci-dessous pour mon cas généralisé, mais je vais d'abord essayer un exemple codé en dur comme preuve de concept, je reviendrai peut-être sur le forum si je reste bloqué sur l'expression.
Merci encore!
Chris
Eval(
Substitute(
Expr(
dt:sex << set property( "value colors", {"F" = __fList__, "M" = __mList__} )
),
Expr( __fList__ ), fColorList,
Expr( __mList__ ), mColorList
)
);
Eval(
Substitute(
Expr(
dt:sex << set property( "value colors", {"F" = __fList__, "M" = __mList__} )
),
Expr( __fList__ ), fColorList,
Expr( __mList__ ), mColorList
)
);
// Set the row state colors
dt << Color by Column( :Sex );
Re : Superposer le tracé personnaliser la couleur (couleurs des lignes)Voici un script qui devrait vous donner une idée de la façon de gérer les couleurs RVB lors de la définition des couleurs de l'état de la ligne et/ou de la définition de la propriété de la colonne Couleurs de la valeur.
Names Default To Here( 1 );
// Open a sample data table, and modify it to
// have 3 new columns representing the RGB values
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << New Column( "R" );
dt << New Column( "G" );
dt << New Column( "B" );
For Each Row(
If(
:Sex == "F",
:R = Color To RGB( "red" )[1];
:G = Color To RGB( "red" )[2];
:B = Color To RGB( "red" )[3];,
:R = Color To RGB( "purple" )[1];
:G = Color To RGB( "purple" )[2];
:B = Color To RGB( "purple" )[3];,
)
);
// Here are a couple of examples of setting colors
// The first one just sets the row colors based upon
// the RGB colors from the :R, :G, :B columns
For( i = 1, i <= N Rows( dt ), i++,
colorList = {};
colorList[1] = :R[i];
colorList[2] = :G[i];
colorList[3] = :B[i];
Row State( i ) = Color State( colorList );
);
Wait( 10 );
dt << clear row states;
Wait( 5 );
// The next example, sets the row state colors by
// first setting the "Value Colors", column
// property, and then sets the row state colors
// based upon the "Value Colors"
// To set the "Value Colors", the below commented
// statement needs to be created using JSL
/*dt:sex << set property("value colors",
{"F" = {0.670588235294118, 0.0313725490196078, 0.988235294117647},
"M" = {0.941176470588235, 0.196078431372549, 0.274509803921569}});*/
// First we will create the female RGB color list
// Find a row that has the RGB colors we desire
rowList = dt << get rows where( :Sex == "F" );
// Since all values of R,G & B will be the same, only used the first
// selected row to create the list for the females
fColorList = {};
fColorList[1] = :R[rowList[1]];
fColorList[2] = :G[rowList[1]];
fColorList[3] = :B[rowList[1]];
// Repeat for the males
rowList = dt << get rows where( :Sex == "M" );
mColorList = {};
mColorList[1] = :R[rowList[1]];
mColorList[2] = :G[rowList[1]];
mColorList[3] = :B[rowList[1]];
// Substitute into a template of the Set Property structure
// the created RGB lists for females and males
Eval(
Substitute(
Expr(
dt:sex << set property( "value colors", {"F" = __fList__, "M" = __mList__} )
),
Expr( __fList__ ), fColorList,
Expr( __mList__ ), mColorList
)
);
// Set the row state colors
dt << Color by Column( :Sex );
Re : Superposer le tracé personnaliser la couleur (couleurs des lignes)Il m'est difficile de visualiser ce que vous avez obtenu en fonction de votre description, mais vous devrez peut-être examiner comment Overlay Plot applique des couleurs personnalisées à vos groupes en choisissant certaines couleurs manuellement et en enregistrant le script.Ensuite, je penserais que vous pourriez écrire votre propre script qui spécifie les valeurs RVB souhaitées pour chaque groupe à la place.Vous devrez peut-être créer le script via une boucle ou quelque chose, mais je suis sûr que c'est possible.
Pouvez-vous fournir un exemple de travail minimal pour un ensemble de données pour illustrer ce que vous décrivez ?
Re : Superposer le tracé personnaliser la couleur (couleurs des lignes)Ceci est utile, lorsque je "marque" une colonne (Label / Unlabel) et que je colorie par cette colonne, les couleurs des lignes correspondent maintenant à la couleur lorsque je trace et groupe par cette colonne, mais maintenant ma question est de savoir comment définir par programme le Valeurs RVB pour différents groupes dans cette colonne.Je veux la possibilité de définir ce que sont chacune des couleurs par les valeurs RVB. Pas sûr du sytex JSL.J'ai une colonne pour R, G et B, et je pourrais créer une colonne concaténée contenant les 3, puis colorer par cette colonne, mais je ne savais pas comment définir par programme les propriétés des différents groupes.
Re : Superposer le tracé personnaliser la couleur (couleurs des lignes)Je pense que vous aurez plus de chance de conserver les couleurs souhaitées en définissant la propriété de colonne, "Couleurs de valeur" pour les colonnes avec lesquelles vous travaillez.Pour la plupart, les "couleurs de valeur" sont les valeurs par défaut de JMP.