@jthi Thanks for your suggestions on this topic which I am returning to as I have to keep the data format as in my example data attached in this thread earlier. I can get almost what I need with the script below (there could be better ways to do this but below is my tale). I need help with two things.
- I need to draw a vertical black line connecting Min and Max for each partID (currently not selected in the local data filter, left chart below). When Min/Max is selected in the local data filter (right chart below), they get connected by a vertical black line (in place of black dots now on right chart), I will get to almost the anatomy of a box plot, which I think is enough and fit for purpose. How to get this vertical line via JSL for each part ID (V Line ()?)?
- Secondly, my measured parameters (Current, Resistance in the example data) in actual data will be >40. So, I do not want to do the Legend color setting the way I have done in my script. How to set the legend color as black by default (otherwise JMP colors each Y-group differently and not how I have set the marker colors).
Names Default To Here (1);
clear log ();
dt = Current Data Table ();
//Set LSL/USL marker and color
dt << Row Selection(
Select where( Contains( :Label, "LSL" ) | Contains( :Label, "USL" ) ),
Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 29 ) << Colors( "Red" );
dt << Clear Select;
// Set Q1/Q3 marker and color
dt << Row Selection(
Select where( Contains( :Label, "Q1" ) | Contains( :Label, "Q3" ) ),
Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 29 ) << Colors( "Black" );
dt << Clear Select;
//Set Median arker and color
dt << Row Selection(
Select where( Contains( :Label, "Median" ) ),Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 0) << Colors( "Blue" );
dt << Clear Select;
// Plot chart
gb = Graph Builder(
Size( 404, 412),
Show Control Panel( 0 ),
Variables( X( :partID ), Y( :Resistance ), Y( :Current ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 37 ), Jitter( "None" ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 35 ), Jitter( "None" ) ) ),
Local Data Filter(
Add Filter(
columns( :Label ),
Where( :Label == {"LSL", "Median", "Q1", "Q3", "USL"} )
)
),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
37,
Properties( 0, {Line Color( 0 )}, Item ID( "Resistance", 1 ) )
), Legend Model(
35,
Properties( 0, {Line Color( 0 )}, Item ID( "Current", 1 ) )
)}
)
)
);
When it's too good to be true, it's neither