Wie kann ich die Linienfarbe im CDF- oder Quantile-Diagramm ändern?Hallo,
Ich erzeuge kummulative Diagramme wie im Beispiel unten.
Ich möchte jedoch die Farbe der Linien nicht durch col2, sondern durch col3 bestimmen.
Hinzufügen Farbe (: col3) hat den Trick nicht gemacht ...
Thx, Phil
Einweg(
Y (: Spalte 1), X (: Spalte 2),
Alle Diagramme (0), Plotquant nach Tatsächlich (1), Passlinie (0), X-Achsen-Proportional (0), Großer Mittelwert (0), Farbe (: col3)
)
Re: Wie kann ich die Linienfarbe in einem CDF- oder Quantile-Plot ändern?Nochmals vielen Dank für Ihre Bemühungen.
Ich glaube, in Ihrem Skriptvorschlag gab es einige Syntaxfehler, die ich
Fest. Siehe unten. Ich erhalte jedoch Fehlermeldungen wie "Kann nicht finden."
ScaleBox ["400"] bei {} ", auch wenn ich mit" 222 "gehe, wie Sie es vorgeschlagen haben. (BTW,
Ich habe nie verstanden, was diese Zahl bedeutet. Und die Linienstile sind es nicht
eingestellt. Farben funktionieren wie zuvor.
Danke, Philipp
Ausdruck =
"Einweg(
Y (: Gewicht),
X (: Sex_Class),
Alle Grafiken (0),
Plot Quantil nach Actual (1),
Passlinie (0),
X-Achse proportional (0),
Grand Mean (0),
SendToReport (
Versand ({}, \! "400 \!"),
ScaleBox,
{Legendenmodell (1 ";
Für (i = 1, i <= N Elemente (Gruppen), i ++,
Ausdruck = Ausdruck || ", Eigenschaften (" || Zeichen (i) || ", {Linienstil (\!" | | |
Linientyp [Mod (i, 5) + 1] || "\!" )}) ";
);
Ausdruck = Ausdruck || ")})))";
Eval (Parse (Ausdruck));
Re: Wie kann ich die Linienfarbe in einem CDF- oder Quantile-Plot ändern?Versuchen Sie dies auf Größe
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
// Create a new column
dt << New Column( "Sex_Class", character, formula( :Sex || "_" || Char( :Age ) ) );
// Determine how many groups in the :Sex_Class
Summarize( dt, groups = by( :Sex_Class ) );
// Create the value colors list
colorlist = {};
For( i = 1, i <= N Items( groups ), i++,
If( Substr( groups[i], 1, 1 ) == "F",
color = 19,
color = 21
);
Eval(
Substitute(
Expr(
Insert Into( colorlist, __group__ )
),
Expr( __group__ ), Parse( "{\!"" || groups[i] || "\!"" || "=" || Char( color ) || "}" )
)
);
);
// Set the Value Colors property for the Sex_Class column
dt:sex_CLASS << set property( "value colors", Eval( colorlist ) );
linetype = {"Solid", "Dotted", "DashDot", "DashDotDot", "Dashed"};
TheExpr =
"Oneway(
Y( :weight ),
X( :Sex_Class ),
All Graphs( 0 ),
Plot Quantile by Actual( 1 ),
Line of Fit( 0 ),
X Axis Proportional( 0 ),
Grand Mean( 0 ),
SendToReport(
Dispatch(
{},
\!"222\!",
ScaleBox,
{Legend Model(
1,";
For( i = 1, i <= N Items( groups ), i++,
If( i > 1,
TheExpr = TheExpr || ","
);
TheExpr = TheExpr || "Properties(" || Char( i ) || ", {Line Style(\!"" || linetype[Mod( i, 5 ) + 1] || "\!" )} )";
);
TheExpr = TheExpr || "),
)}
)";
Eval( Parse( theexpr ) );
Es sind nur 5 Linienstile verfügbar
Re: Wie kann ich die Linienfarbe in einem CDF- oder Quantile-Plot ändern?Beeindruckend! Ich bin beeindruckt! Es klappt! Ich habe das Skript geändert, um es unterzubringen
Bei mehr als 2 Farben:
// Farben für Lots bestimmen
zusammenfassen (dt, groups = by (: sex_class));
Farbliste = {}; Farbe = 3; Sxcnt = Wort (1, Gruppen [1], "_");
Für (j = 1, j <= n Elemente (Gruppen), j ++,
Wenn (Nicht (Wort (1, Gruppen [j], "_") == Sxcnt), Farbe = Farbe + 1; Sxcnt = Wort (1, Gruppen [j], "_"));
Eval (Substitute (Expr (einfügen in (Farbliste, __group__))), expr (__group__)
), parse ("{\!" "|| groups [j] ||" \! "" || "=" || char (color) || "}"))));
);
dt: sex_class <
Vielen Dank, aber jetzt wurde ich gierig. Was ist mit dem Ändern des Strichstils nach Klasse?
Danke, Philipp
Re: Wie kann ich die Linienfarbe in einem CDF- oder Quantile-Plot ändern?Sie können erreichen, was Sie möchten, indem Sie die gewünschten Wertfarben für die Spalte: Sex_Class festlegen, mit der Sie arbeiten. Hier ist die JSL, um es zu tun, aber es kann leicht interaktiv gemacht werden
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
// Create a new column
dt << new column("Sex_Class", character,
formula(:Sex || "_" || char(:Age))
);
// Determine how many groups in the :Sex_Class
summarize(dt,groups=by(:Sex_Class));
// Create the value colors list
colorlist={};
For(i=1,i<=n items(groups),i++,
If(substr(groups[i],1,1)=="F",
color=19,
color=21
);
Eval(
Substitute(
Expr(
insert into(colorlist, __group__ )),
expr( __group__ ), parse("{\!""||groups[i]||"\!""||"="||char(color)||"}")
)
)
);
// Set the Value Colors property for the Sex_Class column
dt:sex_CLASS<<SET property=""></SET>

Re: Wie kann ich die Linienfarbe in einem CDF- oder Quantile-Plot ändern?Vielen Dank für die schnelle Antwort.
Anbei ein Beispiel mit mehreren Klassen M / F. Jede Klasse hat ihre Linie
aber vom Geschlecht bestimmte Farben.
Vereisung auf dem Kuchen wäre Farbe nach Geschlecht und Strichart nach Klasse 
Philipp
Einweg(
Y (: Gewicht),
X (: Sex_Class),
Alle Diagramme (0), Plot-Quantil nach Tatsächlich (1), Passlinie (0), X-Achse
Proportional (0), Großer Mittelwert (0), Farbe (: Geschlecht),
SendToReport (
Dispatch ({"Normal Quantile Plot"}, "Oneway QuantilePlot"), FrameBox, {Line
Breitenskala (3), Transparenz (0)}),
)
)
Re: Wie kann ich die Linienfarbe in einem CDF- oder Quantile-Plot ändern?Ich kann verstehen, wie Sie Datenpunkte in einer anderen Spalte einfärben können
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
dt << Oneway(
Y( :weight ),
X( :sex ),
All Graphs( 0 ),
Plot Quantile by Actual( 1 ),
Line of Fit( 0(1) ),
X Axis Proportional( 0 ),
Grand Mean( 0 )
);
dt << color by( :age );
Ich sehe jedoch nicht, wie Sie das direkt mit den Liniensegmenten machen, da jedes Segment zwischen zwei Werten verknüpft ist, die zwei verschiedene Werte der dritten Farbe haben können. Könnten Sie ein Modell für das, was Sie denken, liefern?