Loop through list, create Tab box, Graph Builder PlotHi,
I am trying to loop through the list to create a tab box and add variables stored in the list in the graph builder. Something doesn't seem to be correct in my jsl code. Any suggestions?
Here is what I want - Add the columns from each list in X for each tabs

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] ) )
)
)
)
)
)
)
);
);
Thanks,
Jackie
Automation and ScriptingData Exploration and VisualizationRe: Loop through list, create Tab box, Graph Builder PlotHave you checked your expressions are being built correctly? First try to get it working with just one list and then add others when that is working. I can't run the script due to this error

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: Loop through list, create Tab box, Graph Builder Plot@jthi
This expression works with one list but if I try to add it in the loop, it doesn't work
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: Loop through list, create Tab box, Graph Builder PlotHi @Mark_Bailey
I tried using the expression you suggested in the below discussion but something doesn't seem to work. Any work around for this?
Use variable list of columns as Y Axis in Graph Builder - JMP User Community
Re: Loop through list, create Tab box, Graph Builder PlotI would most likely rewrite the script to avoid using parse on variable names and having so many lists which you have to keep track of (also if you have JMP16+ using For Each is usually better than For). I did some modifications and now it might work
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: Loop through list, create Tab box, Graph Builder PlotThanks Jarmo!