JSL crea una linea dorsale per cambiare gruppo ogni volta
Ciao,
Ho questo 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 grafici x per y basati su un elenco, ora sto cercando di aggiungere una linea della colonna vertebrale ma ho 2 problemi:
1. la linea della colonna vertebrale deve essere creata in base alla colonna "Gruppo" e potrebbe avere valori diversi (ad esempio "Valore1" potrebbe essere "Valore4" o "Valore0" può essere "Valore34" a volte), quindi devo trovare un modo per creare questo con un elenco, se possibile
2. crea 1 linea della colonna vertebrale e non 4 come voglio
il mio tavolo
| Gruppo | test1 | test2 | test3 | 1 | 1 |
| BL | 1 | 1 | 1 | 1 | 1 |
| BL | 2 | 2 | 2 | 2 | 65 |
| BL | 23 | 3 | 6 | 1 | 1 |
| POR | 2 | 2 | 2 | 2 | 2 |
| Valore1 | 1 | 1 | 1 | 3 | 4 |
| POR | 5 | 7 | 2 | 2 | 2 |
| Valore1 | 7 | 5 | 1 | 7 | 3 |
| Valore2 | 2 | 2 | 2 | 2 | 2 |
| Valore0 | 8 | 1 | 1 | 1 | 6 |
se lo faccio a mano è così:

e poi scelgo per "Gruppo" (credo di aver bisogno di aggiungerlo allo script in qualche modo)
quindi faccio clic su "flessibile" -> "adatta spline" -> contrassegno la "standardizza x" e faccio clic su "ok"
e l'ultima cosa che aggiungo è la legenda delle righe

ScriptingRi: JSL creando una linea dorsale per cambiare gruppo ogni voltaCiao,
Penso che dovrai esaminare la gestione delle espressioni per questo. Inizierai con un'espressione e inserirai le cose in essa ... in particolare aggiungerai i dettagli della spline di adattamento nell'espressione di adattamento y per x.
La gestione delle espressioni ha una curva di apprendimento ripida, ma è molto potente.
Vedi se questo ti porta sulla strada che desideri. Notare la combinazione di Insert Into () insieme a Substitute (), che sostituisce i vari livelli di gruppo in _XX_ nell'espressione originale.
Saluti,
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 crea una linea dorsale per cambiare gruppo ogni voltagrazie mille! questo funziona!
nel caso qualcuno voglia colori diversi nella linea della colonna vertebrale
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] ))
);