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;Ri: JSL creando una linea dorsale per cambiare gruppo ogni voltagrazie mille! questo funziona!
ho una domanda, in cui definisci in modo preciso che XX è il groupList [i]
lo vedo alla fine della riga, ma perché è stato definito lì?
diciamo che voglio che la linea della colonna vertebrale abbia colori diversi:
insertinto(bivExpr, substitute(expr(Fit Where( :Group == _XX_, Fit Spline( 0.1, {Line Color( {212, 73, 88} )} ))), expr(_XX_), groupList[i] ))<BR /><BR />//this is the part i want to change<BR />Line Color( {212, 73, 88} )e diciamo che questo è il colore che voglio avere:
{207, 121, 38}
{64, 111, 223}
{57, 177, 67}
{213, 72, 87}dove definirò l'espressione in modo che possa essere modificata, come hai fatto con _XX_