JSL créant une ligne de dos pour changer de groupe à chaque fois
Bonjour,
J'ai ce 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} )} ) )),);il crée des graphiques x par y basés sur une liste, j'essaye maintenant d'ajouter une ligne d'épine mais j'ai 2 problèmes:
1. la ligne de dos doit être créée en fonction de la colonne "Groupe" et elle peut avoir des valeurs différentes (comme "Value1" peut être "Value4" ou "Value0" peut parfois être "Value34") donc j'ai besoin de trouver un moyen de créer ceci avec une liste si possible
2. il crée 1 ligne de colonne vertébrale et non 4 comme je veux
ma table
| Grouper | 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 |
| Valeur1 | 1 | 1 | 1 | 3 | 4 |
| POR | 5 | 7 | 2 | 2 | 2 |
| Valeur1 | 7 | 5 | 1 | 7 | 3 |
| Valeur2 | 2 | 2 | 2 | 2 | 2 |
| Valeur0 | 8 | 1 | 1 | 1 | 6 |
si je le fais à la main, c'est comme ça:

puis je choisis "Groupe" (je crois que je dois ajouter ceci au script d'une manière ou d'une autre)
puis je clique sur "flexible" -> "fit spline" -> marque le "standardize x" et clique sur "ok"
et la dernière chose que j'ajoute est la légende de la ligne

ScriptingRe: JSL créant une ligne de dos pour changer de groupe à chaque foisSalut,
Je pense que vous allez devoir vous pencher sur la gestion des expressions pour cela. Vous allez commencer par une expression et y insérer des éléments ... en particulier, vous ajouterez les détails de la spline d'ajustement dans l'expression d'ajustement y par x.
La gestion des expressions a une courbe d'apprentissage abrupte, mais elle est très puissante.
Voyez si cela vous amène sur le chemin que vous souhaitez. Notez la combinaison de Insert Into () avec un Substitute (), qui remplace les différents niveaux de groupe par _XX_ dans l'expression d'origine.
Acclamations,
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 crée une ligne de colonne vertébrale pour changer de groupe à chaque foisMerci beaucoup! cela marche!
au cas où quelqu'un voudrait des couleurs différentes dans la colonne vertébrale
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] ))
);