Abbina il colore della linea del grafico dei quantili normali al colore della riga impostato nella legenda della rigaNel grafico Oneway, colore i marcatori con il tema colore "SAS Statistical" in Row Legend, ma le linee che collegano i marcatori nel Normal Quantile Plot utilizzano ancora i colori "JMP Default":

Posso modificare manualmente i colori delle linee in "SAS Statistical", andando su "Impostazioni legenda" e modificando il tema colore in "SAS Statistical".Tuttavia, questo metodo codifica effettivamente i colori nel JSL come evidenziato di seguito e non è possibile utilizzarlo come soluzione generica.Ad esempio, in un set di dati diverso con quattro gruppi (1C, 2E, 3E e 4E), il colore della linea di 4E non è definito.Esiste un modo generico di utilizzare JSL per mantenere i colori delle linee coerenti con i colori delle righe impostati in Row Legend, indipendentemente dal numero di gruppi che ho?Grazie.

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: Abbina il colore della linea del grafico dei quantili normali al colore della riga impostato nella legenda della rigaHo dimenticato di pubblicare la funzione JSL aggiornata:
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: Abbina il colore della linea del grafico dei quantili normali al colore della riga impostato nella legenda della riga@txnelson Grazie per il tuo suggerimento.Penso che potrei aver risolto il problema.Se imposto solo il colore dei primi 12 gruppi e lascio il resto così come sono, sembra che JMP abbia un algoritmo per generare i colori in base a questi 12 gruppi e i colori generati corrispondono ai colori delle righe da "colore per colonna" :

Re: Abbina il colore della linea del grafico dei quantili normali al colore della riga impostato nella legenda della rigaFuori mano non lo so.Vorrei consultare la documentazione e/o eseguire alcuni test e scoprire cosa fa.Un'altra opzione è che tu assuma tutto il controllo sull'impostazione dei colori e che tu crei la tua colorazione.
Re: Abbina il colore della linea del grafico dei quantili normali al colore della riga impostato nella legenda della riga@txnelson Una domanda successiva: se ci sono più di 12 gruppi, ricevo il seguente errore e la riga n. 13 diventa bianca:
Ceiling(i / 2) = 13;
Subscript Range in access or evaluation of 'c[3][Ceiling(i / 2)]' , c[3][/*###*/Ceiling( i / 2 )]

Sembra che "SAS Statistical" abbia solo 12 colori definiti:
N Items(Eval List(Get Color Theme Detail("SAS Statistical")[3])) = 12;Quindi, come lo gestisce JMP se sono presenti più gruppi rispetto al numero di colori definiti nel tema colore?Ad esempio, nel grafico sopra il gruppo 13 ha un colore dell'indicatore diverso dagli altri 12 gruppi.Come fa JMP a determinare questo colore?Grazie.
Re: Abbina il colore della linea del grafico dei quantili normali al colore della riga impostato nella legenda della rigaHo leggermente modificato lo script in modo da non dover tornare a dt per trovare il numero di gruppi e l'ho trasformato in una funzione per un utilizzo più semplice.
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: Abbina il colore della linea del grafico dei quantili normali al colore della riga impostato nella legenda della riga@txnelson Grazie!Funziona magnificamente.
Re: Abbina il colore della linea del grafico dei quantili normali al colore della riga impostato nella legenda della rigaPenso di aver finalmente capito il tuo vero problema dichiarato... ti prego, perdona la mia ottusità...
Ecco un modo per abbinare i colori dei punti con i colori delle linee utilizzando un tema colore...in questo caso il tema colore 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: Abbina il colore della linea del grafico dei quantili normali al colore della riga impostato nella legenda della riga@txnelson Grazie per la risposta.Tuttavia, non funziona con temi colore diversi da "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: Abbina il colore della linea del grafico dei quantili normali al colore della riga impostato nella legenda della rigaCredo che tu possa ottenere ciò che desideri semplicemente impostando i colori dello stato della riga per le righe e quindi eseguendo 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" )
)}
)
)
);