변수로 행 범례 변경몇 가지 2 변형 플롯을 자동화하려고하지만 행의 전설을 변경하려고하는 문제에 직면하고 있습니다.
다음은 내가하려는 일의 예입니다.
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));
); 예상되는 결과물은 동일한 플롯을 가진 두 개의 윈도우입니다. 하나는 스플라인 피트와 나이에 대한 전설이고 다른 하나는 섹스에 대한 스플라인 맞춘 전설입니다. 스플라인 피팅이 예상대로 작동하지만 행 범례 명령이 내 변수를 인식하지 못합니다. 내가 뭘 놓치고 있니?
미리 감사드립니다.
다시 : 행 범례 변수로 변경매우 도움이되는 설명. 고맙습니다!
다시 : 행 범례 변수로 변경그 차이는 두 가지 다른 진술의 요구 사항 때문입니다. 언급 한 Fit Spline에는 가변 참조가 없으므로 Group By가 Eval ()이 필요없는 이유에 대해 실제로 질문하고 있다고 가정합니다. 추론은 Group By 및 Row Legend에 대한 요구 사항을 구성합니다. Group By는 매우 제한적인 유연성을 가진 매우 간단한 성명서입니다. 컬럼을 지정해야한다는 것을 알고 있습니다. 사실,이 코드는 As Column () 함수 없이도 매우 잘 실행됩니다. 행 범례로 돌아 가면이 요소는 다양한 형식을 취할 수 있으며 Eval ()이 없으면 구문 분석기는 정보의 일부로 :: var의 실제 문자열을 사용하려고 시도 할 것이고 :: var는 구문 분석 대상이 아니며, :: var의 값은 구문 분석 할 값입니다.
다시 : 행 범례 변수로 변경고맙습니다!
변수 평가를 이해하는 데 도움이되는 보조 질문 - eval ()없이 스플라인 맞춤이 왜 작동합니까? 언제 변수를 평가할 필요가 있으며 언제 평가할 필요가 없습니까?
다시 : 행 범례 변수로 변경:: Var 변수를 Eval () 할 필요가 있습니다.
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));
);