JSL creando una línea de columna para cambiar de grupo cada vez
Hola,
Tengo este script:
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} )} ) )),);crea gráficos x por y basados en una lista, ahora estoy tratando de agregar una línea de columna pero tengo 2 problemas:
1. la línea de la columna vertebral debe crearse en función de la columna "Grupo" y puede tener diferentes valores (como "Valor1" puede ser "Valor4" o "Valor0" puede ser "Valor34" a veces), así que necesito encontrar una manera de crear esto con una lista si es posible
2. crea 1 línea de la columna vertebral y no 4 como quiero
mi mesa
| Grupo | test1 | test2 | test3 | 1 | 1 |
| licenciado en Derecho | 1 | 1 | 1 | 1 | 1 |
| licenciado en Derecho | 2 | 2 | 2 | 2 | sesenta y cinco |
| licenciado en Derecho | 23 | 3 | 6 | 1 | 1 |
| POR | 2 | 2 | 2 | 2 | 2 |
| Valor1 | 1 | 1 | 1 | 3 | 4 |
| POR | 5 | 7 | 2 | 2 | 2 |
| Valor1 | 7 | 5 | 1 | 7 | 3 |
| Valor2 | 2 | 2 | 2 | 2 | 2 |
| Valor0 | 8 | 1 | 1 | 1 | 6 |
si lo hago a mano es así:

y luego elijo por "Grupo" (creo que necesito agregar esto al script de alguna manera)
luego hago clic en "flexible" -> "ajustar spline" -> marque "estandarizar x" y haga clic en "aceptar"
y lo último que agrego es la leyenda de la fila

ScriptingRe: JSL creando una línea de columna para cambiar de grupo cada vezHola,
Creo que necesitarás analizar el manejo de expresiones para esto. Comenzará con una expresión e insertará cosas en ella ... específicamente, agregará los detalles de ajuste de spline en la expresión de ajuste y por x.
El manejo de expresiones tiene una curva de aprendizaje pronunciada, pero es muy poderoso.
Vea si esto le lleva por el camino que desea. Observe la combinación de Insert Into () junto con Substitute (), que sustituye los distintos niveles de grupo por _XX_ en la expresión original.
Salud,
Brady
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;Re: JSL creando una línea de columna para cambiar de grupo cada vez¡muchas gracias! ¡esto funciona!
en caso de que alguien quiera colores diferentes en la línea del lomo
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] ))
);