Faire correspondre la couleur de ligne du tracé quantile normal à la couleur de ligne définie dans la légende de ligneDans le tracé Oneway, je colore les marqueurs avec le thème de couleur « SAS Statistical » dans la légende des lignes, mais les lignes reliant les marqueurs dans le tracé quantile normal utilisent toujours les couleurs « JMP par défaut » :

Je peux changer manuellement les couleurs des lignes en "SAS Statistical", en accédant aux "Paramètres de légende" et en changeant le thème de couleur en "SAS Statistical".Cependant, cette méthode code en dur les couleurs dans le JSL, comme indiqué ci-dessous, et je ne peux pas l'utiliser comme solution générique.Par exemple, dans un ensemble de données différent comportant quatre groupes (1C, 2E, 3E et 4E), la couleur de ligne de 4E n'est pas définie.Existe-t-il un moyen générique d'utiliser JSL pour que les couleurs de ligne restent cohérentes avec les couleurs de ligne que j'ai définies dans Row Legend, quel que soit le nombre de groupes dont je dispose ?Merci.

Oneway(
Y( :Data ),
X( :Group ),
Plot Actual by Quantile( 1 ),
Line of Fit( 0 ),
Box Plots( 1 ),
X Axis Proportional( 0 ),
Points Jittered( 1 ),
Grand Mean( 0 ),
SendToReport(
Dispatch(
{},
"222",
ScaleBox,
<FONT color="#FF0000">{Legend Model(
1,
Properties(
0,
{Line Color( -7306931 ), Fill Color( -7306931 )},
Item ID( "1C", 1 )
),
Properties(
1,
{Line Color( -13654875 ), Fill Color( -13654875 )},
Item ID( "2E", 1 )
),
Properties(
2,
{Line Color( -6727072 ), Fill Color( -6727072 )},
Item ID( "3E", 1 )
)
)}</FONT>
),
Dispatch(
{},
"Oneway Plot",
FrameBox,
{DispatchSeg( Box Plot Seg( 1 ), Line Color( "Red" ) ),
DispatchSeg( Box Plot Seg( 2 ), Line Color( "Red" ) ),
DispatchSeg( Box Plot Seg( 3 ), Line Color( "Red" ) ),
Row Legend(
Group,
Color( 1 ),
Color Theme( "SAS Statistical" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);Re : Faire correspondre la couleur de ligne du tracé quantile normal à la couleur de ligne définie dans la légende de ligneJ'ai oublié de publier la fonction JSL mise à jour :
SetNQPLineColor = function({ow,theme},
{Default Local},<BR />
// Get the colors defined by the Color Theme
c = Get Color Theme Detail( eval(theme) );
// Get the # of line segs
ow_frmbx = ow << xpath("//FrameBox[@helpKey=\!"Oneway QuantilePlot\!"]");
Nseg = ow_frmbx << segCount("Line Seg");
Nseg=Nseg[1];
// Loop across the segments setting the lines to the required colors
For( i = 1, i <= min( Nseg , 2 * N Items(Eval List(c[3])) ), i+= 2,
seg = ow_frmbx << Find Seg( Line Seg( i ) );
seg << Line Color( c[3][Ceiling( i / 2 )] );
);
"Done";
);Re : Faire correspondre la couleur de ligne du tracé quantile normal à la couleur de ligne définie dans la légende de ligne@txnelson Merci pour votre suggestion.Je pense que j'ai peut-être résolu le problème.Si je définis uniquement la couleur des 12 premiers groupes et laisse le reste tel quel, il semble que JMP dispose d'un algorithme pour générer leurs couleurs en fonction de ces 12 groupes, et les couleurs générées correspondent aux couleurs des lignes de "couleur par colonne". :

Re : Faire correspondre la couleur de ligne du tracé quantile normal à la couleur de ligne définie dans la légende de ligneD'emblée, je ne sais pas.Je regarderais dans la documentation et/ou exécuterais des tests et découvrirais ce que cela fait.Une autre option consiste pour vous à prendre en charge tout le contrôle de la définition des couleurs et à créer votre propre coloration.
Re : Faire correspondre la couleur de ligne du tracé quantile normal à la couleur de ligne définie dans la légende de ligne@txnelson Une question complémentaire : s'il y a plus de 12 groupes, j'obtiens l'erreur suivante et la ligne n°13 devient blanche :
Ceiling(i / 2) = 13;
Subscript Range in access or evaluation of 'c[3][Ceiling(i / 2)]' , c[3][/*###*/Ceiling( i / 2 )]

Il semble que "SAS Statistical" n'ait que 12 couleurs définies :
N Items(Eval List(Get Color Theme Detail("SAS Statistical")[3])) = 12;Alors, comment JMP gère-t-il s'il y a plus de groupes que le nombre de couleurs défini dans le thème de couleurs ?Par exemple, dans le graphique ci-dessus, le groupe 13 a une couleur de marqueur différente de celle des 12 autres groupes.Comment JMP détermine-t-il cette couleur ?Merci.
Re : Faire correspondre la couleur de ligne du tracé quantile normal à la couleur de ligne définie dans la légende de ligneJ'ai légèrement modifié le script pour ne pas avoir à revenir à dt pour trouver le nombre de groupes, et j'en ai fait une fonction pour une utilisation plus facile.
SetNQPLineColor = function({ow,theme},
{Default Local},
// Get the colors defined by the Color Theme
c = Get Color Theme Detail( eval(theme) );
// Get the # of line segs
ow_frmbx = ow << xpath("//FrameBox[@helpKey=\!"Oneway QuantilePlot\!"]");
Nseg = ow_frmbx << segCount("Line Seg");
Nseg=Nseg[1];
// Loop across the segments setting the lines to the required colors
For( i = 1, i <= Nseg, i+= 2,
seg = ow_frmbx << Find Seg( Line Seg( i ) );
seg << Line Color( c[3][Ceiling( i / 2 )] );
);
"Done!";
);
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
// Set the row state colors
dt << color by column( :age , color theme("SAS Statistical"));
// Create the chart
ow1 = Oneway(
Y( :height ),
X( :age ),
Plot Actual by Quantile( 1 ),
Box Plots( 1 )
);
SetNQPLineColor(ow1,"SAS Statistical");
Re : Faire correspondre la couleur de ligne du tracé quantile normal à la couleur de ligne définie dans la légende de ligne@txnelson Merci!Cela fonctionne à merveille.
Re : Faire correspondre la couleur de ligne du tracé quantile normal à la couleur de ligne définie dans la légende de ligneJe pense que j'ai enfin compris votre problème réel déclaré... s'il vous plaît, pardonnez mon étourdissement......
Voici une façon de faire correspondre les couleurs des points avec les couleurs des lignes à l'aide d'un thème de couleurs..... dans ce cas, le thème de couleurs SAS Statistical

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
// Set the row state colors
dt << color by column( :age , color theme("SAS Statistical"));
// Find out how many groupings there are
summarize( dt, grpBy = By( :age ) );
// Create the chart
ow = Oneway(
Y( :height ),
X( :age ),
Plot Actual by Quantile( 1 ),
Box Plots( 1 )
);
// Get the colors defined by the Color Theme
c = Get Color Theme Detail( "SAS Statistical" );
// Loop across the segments setting the lines to the required colors
For( i = 1, i <= N Items( grpBy ) * 2, i = i + 2,
seg = (Report( ow )[FrameBox( 2 )] << Find Seg( Line Seg( i ) ));
seg << line color( c[3][Ceiling( i / 2 )] );
);Re : Faire correspondre la couleur de ligne du tracé quantile normal à la couleur de ligne définie dans la légende de ligne@txnelson Merci pour votre réponse.Cependant, cela ne fonctionne pas pour les thèmes de couleurs autres que « JMP Default ».
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << color by column( :sex , <FONT color="#ff0000"><STRONG>color theme("SAS Statistical")</STRONG></FONT>);
Oneway(
Y( :height ),
X( :sex ),
Plot Actual by Quantile( 1 ),
Box Plots( 1 ),
SendToReport(
Dispatch(
{},
"Oneway Plot",
FrameBox,
{DispatchSeg( Box Plot Seg( 1 ), Line Color( "Red" ) ), DispatchSeg(
Box Plot Seg( 2 ),
Line Color( "Red" )
)}
)
)
);
Re : Faire correspondre la couleur de ligne du tracé quantile normal à la couleur de ligne définie dans la légende de ligneJe pense que vous pouvez obtenir ce que vous voulez en définissant simplement les couleurs de l'état des lignes pour les lignes, puis en exécutant votre Oneway.

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << color by column( :sex );
Oneway(
Y( :height ),
X( :sex ),
Plot Actual by Quantile( 1 ),
Box Plots( 1 ),
SendToReport(
Dispatch(
{},
"Oneway Plot",
FrameBox,
{DispatchSeg( Box Plot Seg( 1 ), Line Color( "Red" ) ), DispatchSeg(
Box Plot Seg( 2 ),
Line Color( "Red" )
)}
)
)
);