Parcourez la liste, créez une zone d'onglet, un tracé du générateur de graphiquesSalut,
J'essaie de parcourir la liste pour créer une zone d'onglet et ajouter des variables stockées dans la liste dans le générateur de graphiques. Quelque chose ne semble pas correct dans mon code jsl. Aucune suggestion?
Voici ce que je veux – Ajouter les colonnes de chaque liste dans X pour chaque onglet

dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
List1 = {"NPN1", "PNP1", "PNP2", "NPN2", "PNP3", "IVP1"};
List2 = {"PNP4", "NPN3", "IVP2", "NPN4", "SIT1"};
List3 = {"INM1", "INM2", "VPM1", "VPM2", "VPM3"};
List4 = {"SNM1", "SPM1", "NPN5", "EP2", "ZD6"};
var expr1 = Expr( Variables() );
For( c = 1, c <= N Items( List1 ), c++,
x expr1 = Expr(
X( Position( 1 ), Combine( "Parallel Merged" ) )
);
Insert Into( x expr1, List1[c], 1 );
Insert Into( var expr1, Name Expr( x expr1 ) );
);
var expr2 = Expr( Variables() );
For( c = 1, c <= N Items( List2 ), c++,
x expr2 = Expr(
X( Position( 1 ), Combine( "Parallel Merged" ) )
);
Insert Into( x expr2, List2[c], 1 );
Insert Into( var expr2, Name Expr( x expr2 ) );
);
var expr3 = Expr( Variables() );
For( c = 1, c <= N Items( List3 ), c++,
x expr3 = Expr(
X( Position( 1 ), Combine( "Parallel Merged" ) )
);
Insert Into( x expr3, List3[c], 1 );
Insert Into( var expr3, Name Expr( x expr3 ) );
);
var expr4 = Expr( Variables() );
For( c = 1, c <= N Items( List4 ), c++,
x expr4 = Expr(
X( Position( 1 ), Combine( "Parallel Merged" ) )
);
Insert Into( x expr4, List4[c], 1 );
Insert Into( var expr4, Name Expr( x expr4 ) );
);
lists = {"List1", "List2", "List3", "List4"};
var = {};
For( i = 1, i <= 20, i++,
Insert Into( var, Parse( "var expr" || Char( i ) ) );
Insert Into( gbv, Parse( "vvv" || Char( i ) ) )
;
);
New Window( "Plots",
Show Menu( 0 ),
show toolbars( 0 ),
tb = Tab Box()
);
For( i = 1, i <= N Items( lists ), i++,
tb << Add(
lists[i],
V List Box(
H List Box(
gb1 = Eval Expr(
dt << Graph Builder(
Size( 1117, 781 ),
Show Control Panel( 0 ),
////something is not correct here?????
Expr( Name Expr( var[i] ) ),
Elements(
Histogram(
X( 2 ),
X( 3 ),
X( 4 ),
X( 5 ),
X( 6 ),
X( 7 ),
X( 8 ),
X( 9 ),
X( 10 ),
X( 11 ),
X( 12 ),
X( 13 ),
X( 14 ),
X( 15 ),
X( 16 ),
X( 1 ),
Legend( 2 ),
),
Box Plot(
X( 2 ),
X( 3 ),
X( 4 ),
X( 5 ),
X( 6 ),
X( 7 ),
X( 8 ),
X( 9 ),
X( 10 ),
X( 11 ),
X( 12 ),
X( 13 ),
X( 14 ),
X( 15 ),
X( 16 ),
X( 1 ),
Legend( 3 ),
Outliers( 0 )
)
)
)
),
gb1,
Tabulate(
Show Control Panel( 0 ),
Set Format( Uniform Format( 10, 2 ) ),
Add Table(
Column Table( Statistics( Mean, Std Dev ) ),
Row Table(
Analysis Columns(
Eval( Parse( lists[i] ) )
)
)
)
)
)
)
);
);
Merci,
Jackie
Automatisation et scriptsExploration et visualisation des donnéesRe : Parcourez la liste, créez une zone d'onglet, un tracé du générateur de graphiquesAvez-vous vérifié que vos expressions sont correctement construites ? Essayez d’abord de le faire fonctionner avec une seule liste, puis ajoutez-en d’autres lorsque cela fonctionne. Je ne peux pas exécuter le script à cause de cette erreur

Can insert only into an L-value in access or evaluation of 'Insert Into' , Insert Into/*###*/(gbv, Parse("vvv" || Char(i)))
at line 58 in \Script.jslRe : Parcourez la liste, créez une zone d'onglet, un tracé du générateur de graphiques@jthi
Cette expression fonctionne avec une seule liste mais si j'essaye de l'ajouter dans la boucle, ça ne marche pas
Eval(
Substitute(
Expr(
gb2 = dt << Graph Builder(
Size( 1117, 781 ),
Show Control Panel( 0 ),
vvv1,
Elements(
Histogram(
X( 2 ),
X( 3 ),
X( 4 ),
X( 5 ),
X( 6 ),
X( 7 ),
X( 8 ),
X( 9 ),
X( 10 ),
X( 11 ),
X( 12 ),
X( 13 ),
X( 14 ),
X( 15 ),
X( 16 ),
X( 1 ),
Legend( 2 ),
),
Box Plot(
X( 2 ),
X( 3 ),
X( 4 ),
X( 5 ),
X( 6 ),
X( 7 ),
X( 8 ),
X( 9 ),
X( 10 ),
X( 11 ),
X( 12 ),
X( 13 ),
X( 14 ),
X( 15 ),
X( 16 ),
X( 1 ),
Legend( 3 ),
Outliers( 0 )
)
)
)
),
Expr( vvv1 ), Name Expr( var expr1 )
)
);
tabu = Tabulate(
Show Control Panel( 0 ),
Set Format( Uniform Format( 10, 2 ) ),
Add Table(
Column Table( Statistics( Mean, Std Dev ) ),
Row Table(
Analysis Columns(
Eval(List1)
)
)
)
)
Re : Parcourez la liste, créez une zone d'onglet, un tracé du générateur de graphiquesSalut @Mark_Bailey
J'ai essayé d'utiliser l'expression que vous avez suggérée dans la discussion ci-dessous, mais quelque chose ne semble pas fonctionner. Y a-t-il une solution pour cela ?
Utiliser une liste variable de colonnes comme axe Y dans Graph Builder - Communauté d'utilisateurs JMP
Re : Parcourez la liste, créez une zone d'onglet, un tracé du générateur de graphiquesJe réécrirais très probablement le script pour éviter d'utiliser l'analyse sur les noms de variables et d'avoir autant de listes que vous devez suivre (même si vous avez JMP16+, l'utilisation de For Each est généralement meilleure que For). J'ai fait quelques modifications et maintenant ça pourrait marcher
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
List1 = {"NPN1", "PNP1", "PNP2", "NPN2", "PNP3", "IVP1"};
List2 = {"PNP4", "NPN3", "IVP2", "NPN4", "SIT1"};
List3 = {"INM1", "INM2", "VPM1", "VPM2", "VPM3"};
List4 = {"SNM1", "SPM1", "NPN5", "EP2", "ZD6"};
var expr1 = Expr(Variables());
For(c = 1, c <= N Items(List1), c++,
x expr1 = Expr(
X(Position(1), Combine("Parallel Merged"))
);
Insert Into(x expr1, List1[c], 1);
Insert Into(var expr1, Name Expr(x expr1));
);
var expr2 = Expr(Variables());
For(c = 1, c <= N Items(List2), c++,
x expr2 = Expr(
X(Position(1), Combine("Parallel Merged"))
);
Insert Into(x expr2, List2[c], 1);
Insert Into(var expr2, Name Expr(x expr2));
);
var expr3 = Expr(Variables());
For(c = 1, c <= N Items(List3), c++,
x expr3 = Expr(
X(Position(1), Combine("Parallel Merged"))
);
Insert Into(x expr3, List3[c], 1);
Insert Into(var expr3, Name Expr(x expr3));
);
var expr4 = Expr(Variables());
For(c = 1, c <= N Items(List4), c++,
x expr4 = Expr(
X(Position(1), Combine("Parallel Merged"))
);
Insert Into(x expr4, List4[c], 1);
Insert Into(var expr4, Name Expr(x expr4));
);
lists = {"List1", "List2", "List3", "List4"};
var = {};
gbv = {};
For(i = 1, i <= 4, i++,
Insert Into(var, Name Expr(Eval(Parse("var expr" || Char(i)))));
Insert Into(gbv, Parse("vvv" || Char(i)));
);
nw = New Window("Plots",
Show Menu(0),
show toolbars(0),
tb = Tab Box()
);
For(i = 1, i <= N Items(lists), i++,
tb << Add(
lists[i],
V List Box(
H List Box(
Eval(Eval Expr(
dt << Graph Builder(
Size(1117, 781),
Show Control Panel(0),
////something is not correct here?????
Expr(Name Expr(var[i])),
Elements(
Histogram(
X(2),
X(3),
X(4),
X(5),
X(6),
X(7),
X(8),
X(9),
X(10),
X(11),
X(12),
X(13),
X(14),
X(15),
X(16),
X(1),
Legend(2),
),
Box Plot(
X(2),
X(3),
X(4),
X(5),
X(6),
X(7),
X(8),
X(9),
X(10),
X(11),
X(12),
X(13),
X(14),
X(15),
X(16),
X(1),
Legend(3),
Outliers(0)
)
)
)
)),
Tabulate(
Show Control Panel(0),
Set Format(Uniform Format(10, 2)),
Add Table(
Column Table(Statistics(Mean, Std Dev)),
Row Table(
Analysis Columns(
Eval(Parse(lists[i]))
)
)
)
)
)
)
);
);Re : Parcourez la liste, créez une zone d'onglet, un tracé du générateur de graphiquesMerci Jarmo!