Passen Sie die Linienfarbe des Normalquantildiagramms an die in der Zeilenlegende festgelegte Zeilenfarbe anIm Oneway-Plot färbe ich die Markierungen mit dem Farbthema „SAS Statistical“ in der Zeilenlegende ein, aber die Linien, die die Markierungen im Normalquantildiagramm verbinden, verwenden immer noch „JMP-Standard“-Farben:

Ich kann die Linienfarben manuell in „SAS Statistical“ ändern, indem ich zu den „Legendeneinstellungen“ gehe und das Farbdesign auf „SAS Statistical“ ändere.Diese Methode codiert jedoch tatsächlich die Farben in der JSL fest, wie unten hervorgehoben, und ich kann sie nicht als generische Lösung verwenden.Beispielsweise ist in einem anderen Datensatz mit vier Gruppen (1C, 2E, 3E und 4E) die Linienfarbe von 4E nicht definiert.Gibt es eine generische Möglichkeit, JSL zu verwenden, um die Linienfarben mit den Zeilenfarben in Einklang zu halten, die ich in der Zeilenlegende festgelegt habe, unabhängig davon, wie viele Gruppen ich habe?Danke.

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 )
)}
)
)
);Betreff: Linienfarbe des Normalquantildiagramms an die in der Zeilenlegende festgelegte Zeilenfarbe anpassenIch habe vergessen, die aktualisierte JSL-Funktion zu veröffentlichen:
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";
);Betreff: Linienfarbe des Normalquantildiagramms an die in der Zeilenlegende festgelegte Zeilenfarbe anpassen@txnelson Danke für deinen Vorschlag.Ich glaube, ich habe das Problem vielleicht gelöst.Wenn ich nur die Farbe der ersten 12 Gruppen festlege und den Rest so lasse, wie sie sind, scheint JMP über einen Algorithmus zu verfügen, um ihre Farben basierend auf diesen 12 Gruppen zu generieren, und die generierten Farben stimmen mit den Zeilenfarben aus „Farbe nach Spalte“ überein. :

Betreff: Linienfarbe des Normalquantildiagramms an die in der Zeilenlegende festgelegte Zeilenfarbe anpassenIch weiß es nicht.Ich würde in der Dokumentation nachsehen und/oder einige Tests durchführen und herausfinden, was es bewirkt.Eine weitere Möglichkeit besteht darin, dass Sie die gesamte Kontrolle über die Einstellung der Farben übernehmen und sich Ihre eigene Farbgebung ausdenken.
Betreff: Linienfarbe des Normalquantildiagramms an die in der Zeilenlegende festgelegte Zeilenfarbe anpassen@txnelson Eine Folgefrage: Wenn es mehr als 12 Gruppen gibt, erhalte ich die folgende Fehlermeldung und Zeile Nr. 13 wird weiß:
Ceiling(i / 2) = 13;
Subscript Range in access or evaluation of 'c[3][Ceiling(i / 2)]' , c[3][/*###*/Ceiling( i / 2 )]

Es scheint, dass in „SAS Statistical“ nur 12 Farben definiert sind:
N Items(Eval List(Get Color Theme Detail("SAS Statistical")[3])) = 12;Wie geht JMP damit um, wenn mehr Gruppen vorhanden sind, als im Farbthema definiert sind?Im Diagramm oben hat beispielsweise Gruppe 13 eine andere Markierungsfarbe als die anderen 12 Gruppen.Wie bestimmt JMP diese Farbe?Danke.
Betreff: Linienfarbe des Normalquantildiagramms an die in der Zeilenlegende festgelegte Zeilenfarbe anpassenDas Skript wurde leicht geändert, damit ich nicht mehr zu dt zurückkehren muss, um die Anzahl der Gruppen zu ermitteln, und es zur einfacheren Verwendung in eine Funktion umgewandelt.
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");
Betreff: Linienfarbe des Normalquantildiagramms an die in der Zeilenlegende festgelegte Zeilenfarbe anpassen@txnelson Danke schön!Das funktioniert wunderbar.
Betreff: Linienfarbe des Normalquantildiagramms an die in der Zeilenlegende festgelegte Zeilenfarbe anpassenIch glaube, ich habe endlich Ihr eigentliches Problem herausgefunden. Bitte verzeihen Sie meine Dickköpfigkeit.
Hier ist eine Möglichkeit, die Punktfarben mithilfe eines Farbthemas an die Linienfarben anzupassen. In diesem Fall das SAS Statistical-Farbthema

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 )] );
);Betreff: Linienfarbe des Normalquantildiagramms an die in der Zeilenlegende festgelegte Zeilenfarbe anpassen@txnelson Danke für Ihre Antwort.Es funktioniert jedoch nicht für andere Farbthemen als „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" )
)}
)
)
);
Betreff: Linienfarbe des Normalquantildiagramms an die in der Zeilenlegende festgelegte Zeilenfarbe anpassenIch glaube, Sie können das bekommen, was Sie wollen, indem Sie einfach die Zeilenstatusfarben für die Zeilen festlegen und dann Ihr Oneway ausführen.

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" )
)}
)
)
);