Ändern der Zeilenlegende nach VariableIch versuche, ein paar bivariate Diagramme zu automatisieren, aber ich stoße auf ein Problem, wenn ich versuche, die Zeilenlegenden zu ändern.
Hier ist ein Beispiel dafür, was ich zu tun versuche:
Open("$SAMPLE_DATA/Big Class.jmp");
variables = {"age", "sex"};
for(v=1,v<=nitems(variables),v++,
::var = variables[v];
biv = Bivariate( Y( :height), X( :weight),
group by(as column(::var)),
Fit Spline( 1, Standardized, {Line Width( 2 )} ));
Report( biv )[Frame Box(1)] << Row Legend( ::var, color(1), marker(1));
);Meine erwartete Ausgabe wären zwei Fenster mit identischen Diagrammen - eines mit einer Spline-Anpassung und Legende für das Alter und ein anderes mit einer Spline-Anpassung für das Geschlecht. Die Spline-Anpassungen funktionieren wie erwartet, aber der Zeilenlegendenbefehl erkennt meine Variable nicht. Was vermisse ich?
Danke im Voraus!
Betreff: Ändern der Zeilenlegende nach VariableSehr hilfreiche Erklärung. Vielen Dank!
Betreff: Ändern der Zeilenlegende nach VariableDer Grund für den Unterschied liegt in den Anforderungen der 2 unterschiedlichen Aussagen.Der von Ihnen erwähnte Fit Spline hat keine Variablenreferenz, daher nehme ich an, dass Sie sich tatsächlich fragen, warum Group By kein Eval() benötigt.Die Begründung ist die Zusammensetzung der Anforderungen für Group By und Row Legend.Das Group By ist eine sehr einfache Anweisung mit sehr begrenzter Flexibilität.Es weiß, dass man eine Spalte spezifizieren muss.Tatsächlich läuft der Code auch ohne die As Column()-Funktion sehr gut.In Bezug auf die Zeilenlegende kann dieses Element viele verschiedene Formate annehmen, und ohne Eval() versucht der Parser, die tatsächliche Zeichenfolge von ::var als Teil der Informationen zu verwenden, und ::var ist nicht das, was Sie analysieren möchten. Der Wert von ::var ist das, was Sie analysieren möchten.
Betreff: Ändern der Zeilenlegende nach VariableVielen Dank!
Sekundäre Frage zum Verständnis der Variablenauswertung: Warum funktioniert die Spline-Anpassung ohne eval();? Wann müssen Sie die Variable auswerten und wann nicht?
Betreff: Ändern der Zeilenlegende nach VariableSie müssen nur die Variable ::Var auswerten()
Open("$SAMPLE_DATA/Big Class.jmp");
variables = {"age", "sex"};
for(v=1,v<=nitems(variables),v++,
::var = variables[v];
biv = Bivariate( Y( :height), X( :weight),
group by(as column(::var)),
Fit Spline( 1, Standardized, {Line Width( 2 )} ));
Report( biv )[Frame Box(1)] << Row Legend( eval(::var), color(1), marker(1));
);