JSL créant une ligne vertébrale 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'essaie maintenant d'ajouter une ligne vertébrale mais j'ai 2 problèmes :
1. la ligne vertébrale doit être créée en fonction de la colonne "Groupe" et elle peut avoir des valeurs différentes (comme "Valeur1" peut être "Valeur4" ou "Valeur0" peut parfois être "Valeur34"), je dois donc trouver un moyen de créer ceci avec une liste si possible
2. cela crée 1 ligne de colonne vertébrale et non 4 comme je le souhaite
ma table
| Groupe | 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 par "Groupe" (je crois que je dois l'ajouter au script d'une manière ou d'une autre)
puis je clique sur "flexible" -> "ajuster la spline" -> marque le "standardiser x" et clique sur "ok"
et la dernière chose que j'ajoute est la légende des lignes

Modélisation statistique avancéeMélange et nettoyage des donnéesPersonnalisation de masseRe : JSL crée une ligne vertébrale pour changer de groupe à chaque foisMerci beaucoup! cela marche!
au cas où quelqu'un voudrait des couleurs différentes dans la ligne de 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] ))
);Re : JSL crée une ligne vertébrale pour changer de groupe à chaque foisSalut,
Je pense que vous devrez examiner la gestion des expressions pour cela. Vous commencerez par une expression et y insérerez des éléments... plus précisément, vous ajouterez les détails de la spline d'ajustement dans l'expression d'ajustement y par x.
La gestion des expressions nécessite une courbe d’apprentissage abrupte, mais elle est très puissante.
Voyez si cela vous met sur le chemin que vous souhaitez. Notez la combinaison de Insert Into() avec Substitute(), qui remplace les différents niveaux de groupe pour _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;