按变量更改行图例我正在尝试自动化几个双变量图,但我遇到了一个试图改变行传说的问题。
这是我正在尝试做的一个例子:
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));
); 我的预期输出将是两个具有相同图形的窗口 - 一个具有样条拟合和年龄的图例,另一个具有样条适合性别的图例。样条拟合正在按预期工作,但行图例命令无法识别我的变量。我错过了什么?
提前致谢!
Re:按变量更改行图例非常有用的解释。谢谢!
Re:按变量更改行图例差异的原因是因为2个不同陈述的要求。 你提到的Fit Spline没有变量引用,所以我假设你实际上在质疑为什么Group By不需要Eval()。 理由是组合By By和Row Legend的要求。 Group By是一个非常简单的陈述,灵活性非常有限。 它知道必须指定一个列。 事实上,即使没有As Column()函数,代码也能很好地运行。 转向Row Legend,这个元素可以采用许多不同的格式,如果没有Eval(),解析器将尝试使用:: var的实际字符串作为信息的一部分,而:: var不是你想要解析的,:: var的值是你想要解析的。
Re:按变量更改行图例谢谢!
第二个问题,以帮助我理解变量评估 - 为什么样条曲线适合没有eval();?您何时需要评估变量以及何时不需要评估变量?
Re:按变量更改行图例你只需要Eval():: Var变量
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));
);