Distribution graph with process capability not working in scriptHi,
I want to use this generated script on numerous columns:
Distribution(
Stack( 1 ),
Continuous Distribution(
Column( :"VDD_ILIMIT"n ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Outlier Box Plot( 0 ),
Process Capability( LSL( . ), Target( . ), USL( 0.5 ), Show as Graph Reference Lines )
),
SendToReport( Dispatch( {"VDD_ILIMIT"}, "1", ScaleBox, {Add Ref Line( 0.5, "Solid", "Blue", "USL", 1 )} ) )
);When using this script, all works well, and I get a distribution graph with process capability plot at the same window.
When I try to run it on a number of columns, I get only the distribution graphs for each column, without the process capability plot and data.
// Open the data table
dt = Current Data Table();
colnames = dt << get column names( numeric, string );
For( i = 1, i <= N Items( colnames ), i++,
If( Contains( Column( colnames[i] ) << Get Name, "ILIMIT" ),
// Create a distribution graph for the column
meanValue = Col Mean( colnames[i] );
stdDevValue = Col Std Dev( colnames[i] );
ppkValue = 2;
uslValue = meanValue + ppkValue * 3 * stdDevValue;
Distribution(
Stack( 1 ),
Continuous Distribution(
Column( colnames[i] ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Outlier Box Plot( 0 ),
Process Capability( LSL( . ), Target( . ), USL( uslValue ), Show as Graph Reference Lines )
),
SendToReport( Dispatch( {colnames[i]}, "1", ScaleBox, {Add Ref Line( uslValue, "Solid", "Blue", "USL", 1 )} ) )
);
)
);What am I doing wrong, and why is it behaving in this way?
Automation and ScriptingRe: Distribution graph with process capability not working in scriptBelow is a modification to your code that should work for you
// Open the data table
dt = Current Data Table();
colnames = dt << get column names( numeric, string );
i = 2;
For( i = 1, i <= N Items( colnames ), i++,
//If( Contains( Column( colnames[i] ) << Get Name, "eight" ),
If( Contains( colnames[i], "ILIMIT" ),
// Create a distribution graph for the column
//meanValue = Col Mean( colnames[i] );
meanValue = Col Mean( Column( dt, colnames[i] ) );
//stdDevValue = Col Std Dev( colnames[i] );
stdDevValue = Col Std Dev( Column( dt, colnames[i] ) );
ppkValue = 2; // ???
uslValue = .5; // this value is used below, but was not assigned
Eval(
Eval Expr( // JMP does not evaluate items in a list as parsing
// therefore it has to be preprocessed
Distribution(
Stack( 1 ),
Continuous Distribution(
Column( colnames[i] ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Outlier Box Plot( 0 ),
Process Capability( LSL( . ), Target( . ), USL( Expr( uslValue ) ), Show as Graph Reference Lines )
),
SendToReport(
Dispatch( {Expr( colnames[i] )}, "1", ScaleBox, {Add Ref Line( Expr( uslValue ), "Solid", "Blue", "USL", 1 )} )
)
)
)
);
)
);Re: Distribution graph with process capability not working in scriptJMP isn't able to add the reference lines correctly (and you don't seem to have value for upperlimit?). Below is an example which can give you some ideas
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Open the data table
colnames = dt << get column names(numeric, continuous, string);
dists = {};
For Each({colname}, colnames,
meanValue = Col Mean(Column(dt, colname));
stdDevValue = Col Std Dev(Column(dt, colname));
ppkValue = 2;
uslValue = 3*stddevValue + meanValue;
dist = Eval(EvalExpr(dt << Distribution(
Stack(1),
Continuous Distribution(
Column(Eval(colname)),
Horizontal Layout(1),
Vertical(0),
Outlier Box Plot(0),
Process Capability(
LSL(.),
Target(.),
USL(Expr(uslValue)),
Show as Graph Reference Lines
)
),
SendToReport(
Dispatch(
{colnames[i]},
"1",
ScaleBox,
{Add Ref Line(Expr(uslValue), "Solid", "Blue", "USL", 1)}
)
)
)));
Insert Into(dists, dist);
);