Haga coincidir el color de línea del gráfico de cuantil normal con el color de fila establecido en la leyenda de filaEn el gráfico unidireccional, coloreo los marcadores con el tema de color "SAS Statistical" en Row Legend, pero las líneas que conectan los marcadores en el gráfico de cuantiles normales todavía usan colores "JMP Default":

Puedo cambiar manualmente los colores de las líneas a "SAS Statistical", yendo a "Configuración de leyenda" y cambiando el tema de color a "SAS Statistical".Sin embargo, este método en realidad codifica los colores en JSL como se resalta a continuación, y no puedo usarlo como una solución genérica.Por ejemplo, en un conjunto de datos diferente con cuatro grupos (1C, 2E, 3E y 4E), el color de línea de 4E no está definido.¿Existe una forma genérica de usar JSL para mantener los colores de las líneas consistentes con los colores de las filas que configuré en Row Legend, independientemente de cuántos grupos tenga?Gracias.

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: Hacer coincidir el color de línea del gráfico cuantil normal con el color de fila establecido en la leyenda de filaOlvidé publicar la función JSL actualizada:
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: Hacer coincidir el color de línea del gráfico cuantil normal con el color de fila establecido en la leyenda de fila@txnelson Gracias por su sugerencia.Creo que pude haber solucionado el problema.Si solo configuro el color de los primeros 12 grupos y dejo el resto como están, parece que JMP tiene un algoritmo para generar sus colores en función de estos 12 grupos, y los colores generados coinciden con los colores de las filas de "color por columna". :

Re: Hacer coincidir el color de línea del gráfico cuantil normal con el color de fila establecido en la leyenda de filaPor cierto, no lo sé.Buscaría en la documentación y/o ejecutaría algunas pruebas y descubriría qué hace.Otra opción es que usted tome todo el control de la configuración de los colores y que cree su propio color.
Re: Hacer coincidir el color de línea del gráfico cuantil normal con el color de fila establecido en la leyenda de fila@txnelson Una pregunta de seguimiento: si hay más de 12 grupos, aparece el siguiente error y la línea n.º 13 se vuelve blanca:
Ceiling(i / 2) = 13;
Subscript Range in access or evaluation of 'c[3][Ceiling(i / 2)]' , c[3][/*###*/Ceiling( i / 2 )]

Parece que "SAS Statistical" sólo tiene 12 colores definidos:
N Items(Eval List(Get Color Theme Detail("SAS Statistical")[3])) = 12;Entonces, ¿cómo maneja JMP si hay más grupos que el número de colores definido en el tema de color?Por ejemplo, en el gráfico anterior, el grupo 13 tiene un color de marcador diferente al de los otros 12 grupos.¿Cómo determina JMP este color?Gracias.
Re: Hacer coincidir el color de línea del gráfico cuantil normal con el color de fila establecido en la leyenda de filaModifiqué ligeramente el script para no tener que volver a dt para encontrar el número de grupos y lo convertí en una función para facilitar su uso.
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: Hacer coincidir el color de línea del gráfico cuantil normal con el color de fila establecido en la leyenda de fila@txnelson ¡Gracias!Esto funciona maravillosamente.
Re: Hacer coincidir el color de línea del gráfico cuantil normal con el color de fila establecido en la leyenda de filaCreo que finalmente he descubierto el problema real planteado... por favor, perdona mi tontería...
Aquí hay una manera de hacer coincidir los colores de los puntos con los colores de las líneas usando un tema de color... en este caso, el tema de color 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: Hacer coincidir el color de línea del gráfico cuantil normal con el color de fila establecido en la leyenda de fila@txnelson Gracias por su respuesta.Sin embargo, no funciona con temas de color distintos de "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: Hacer coincidir el color de línea del gráfico cuantil normal con el color de fila establecido en la leyenda de filaCreo que puede obtener lo que desea simplemente configurando los colores del estado de fila para las filas y luego ejecutando su 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" )
)}
)
)
);