JSL为每次换组创建一条脊柱线
你好,
我有这个脚本:
dt = Current Data Table();
listX = {"1","2"};
listY = {"test1", "test2", "test3"};
fybx = dt << FitYByX(
Y( Eval( listY ) ),
X( Eval( listX ) ),
Fit Where( :Group == "BL", Fit Spline( 0.1, Standardized, {Line Color( {213, 72, 87} )} ) ),
try(Fit Where( :Group == "Value0", Fit Spline( 0.1, Standardized, {Line Color( {57, 177, 67} )} ) )),
try(Fit Where( :Group == "Value1", Fit Spline( 0.1, Standardized, {Line Color( {64, 111, 223} )} ) )),
try(Fit Where( :Group == "Value2", Fit Spline( 0.1, Standardized, {Line Color( {207, 121, 38} )} ) )),);它根据列表创建 x by y 图表,我现在尝试添加一条脊柱线,但有两个问题:
1.脊柱线应该基于“Group”列创建,它可能有不同的值(例如“Value1”可能是“Value4”或“Value0”有时可以是“Value34”)所以我需要找到一种方法来创建如果可能的话,附上一个列表
2.它创建了 1 条脊柱线,而不是我想要的 4 条
我的桌子
| 团体 | 测试1 | 测试2 | 测试3 | 1 | 1 |
| BL | 1 | 1 | 1 | 1 | 1 |
| BL | 2 | 2 | 2 | 2 | 65 |
| BL | 23 | 3 | 6 | 1 | 1 |
| 上电复位 | 2 | 2 | 2 | 2 | 2 |
| 值1 | 1 | 1 | 1 | 3 | 4 |
| 上电复位 | 5 | 7 | 2 | 2 | 2 |
| 值1 | 7 | 5 | 1 | 7 | 3 |
| 值2 | 2 | 2 | 2 | 2 | 2 |
| 值0 | 8 | 1 | 1 | 1 | 6 |
如果我用手做它是这样的:

然后我按“组”进行选择(我相信我需要以某种方式将其添加到脚本中)
然后我单击“灵活”-->“拟合样条曲线”-->标记“标准化x”并单击“确定”
我添加的最后一件事是行图例

高级统计建模数据混合和清理大规模定制回复:JSL 创建一条用于每次更换组的脊柱线非常感谢!这有效!
如果有人想要脊柱线有不同的颜色
ColorList = {};
AList = {207, 121, 38};
BList = {64, 111, 223};
CList = {57, 177, 67};
DList = {213, 72, 87};
InsertInto(ColorList, EvalList(List(AList)));
InsertInto(ColorList, EvalList(List(BList)));
InsertInto(ColorList, EvalList(List(CList)));
InsertInto(ColorList, EvalList(List(DList)));
for (i = 1, i<=nitems(groupList), i++,
insertinto(bivExpr, substitute(expr(Fit Where( :Group == _XX_, Fit Spline( 0.1, {Line Color( _YY_ )} ))), expr(_XX_), groupList[i],expr(_YY_), ColorList[i] ))
);回复:JSL 创建一条用于每次更换组的脊柱线你好,
我认为你需要考虑一下表达式处理。 您将从一个表达式开始,然后将内容插入其中...具体来说,您将把拟合样条线详细信息添加到拟合 y by x 表达式中。
表达式处理的学习曲线很陡峭,但功能非常强大。
看看这是否能让您走上您想要的道路。 请注意 Insert Into() 与 Substitute() 的组合,它用原始表达式中的 _XX_ 替换各个组级别。
干杯,
布雷迪
names default to here(1);
dt = current data table();
listX = {"1","2"};
listY = {"test1", "test2", "test3"};
bivExpr = expr(
Bivariate(
Y( evallist(listY) ),
X( evallist(listx) ),
)
);
groupList = (associative array(dt:group << get values)) << get keys;
for (i = 1, i<=nitems(groupList), i++,
insertinto(bivExpr, substitute(expr(Fit Where( :Group == _XX_, Fit Spline( 0.1, {Line Color( {212, 73, 88} )} ))), expr(_XX_), groupList[i] ))
);
show(nameexpr(bivExpr));
bivExpr;