cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • DownloadSemiconductor Toolkit: Tools to create wafer maps, add wafer geometry to graphics, explore die defects & compare wafers.
  • Discovery Summit 2026: Early User Edition - September 23-24.Register. It's free.
  • See how to design an experiment, explore factor-response relationships, assess tradeoffs, and ID best settings. Register for Sep. 11 Mastering JMP.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
ConvergentWhale
Level III

Maintain the correct zones

On the control charts, I want to exclude the zones over the average when there is no lower limit. 
Here is my script : 

        // Loop across the split data table and read the values for that column from the dt_limits_copy data table. Populate the Spec Limits and Control Limits
For(i = 1, i <= N Cols(dtsplitcopy), i++, 

	limrow = Try((pIDlimits_copy << get rows where(pIDlimits_copy:labelny == cols[i]))[1], .);

	If(Is Missing(limRow) == 0,
		specs = {LSL(.), USL(.), Target(.), Show Limits(1)};

		specs["LSL"] = pIDlimits_copy:Lower Limit Value[limrow];
		specs["USL"] = pIDlimits_copy:Upper Limit value[limrow];
                   
		Column(dtsplitcopy, Char(cols[i])) << set property("spec limits", Eval(specs));

		controllimits = {Individual Measurement(Avg(a), LCL(b), UCL(c))};
                   
                    // If lower limit is missing it is set to mean - (UCL - mean) = 2*mean - UCL as this will fix issues with zones otherwise being wrong if set to missing
		Substitute Into(controllimits,
			Expr(b),
				If(Is Missing(pIDlimits_copy:Lower_Control_Limit[limrow]),
					2 * pIDlimits_copy:Mean_Plot[limrow] - pIDlimits_copy:Upper_Control_Limit[limrow],
					pIDlimits_copy:Lower_Control_Limit[limrow]
				)
		); // this is done to get correct zones
		Substitute Into(controllimits, Expr(c), pIDlimits_copy:Upper_Control_Limit[limrow]);
		Substitute Into(controllimits, Expr(a), pIDlimits_copy:Mean_Plot[limrow]);
                   
		Column(dtsplitcopy, Char(cols[i])) << set property("control limits", Eval(controllimits));
                    // These notes are added so that later we can choose to hide the "artificial lower limits" which is only included for the zones to be correct
		Column(dtsplitcopy, Char(cols[i])) << set property(
			"notes",
			If(Is Missing(pIDlimits_copy:Lower_Control_Limit[limrow]),
				"Only one limit",
				"Two limits"
			)
		);
	);
);
       
dtsplitcopy << sort(by(Date), Replace Table);

n_vars = N Items(cols);
        // Create window for a control chart for all parameters of a given product from a given site
NW = New Window(sitename || " " || prod_ID || " Report",
	For(v = 38, v <= n_vars, v += 1, //changed from column 37 to 38 to avoid 'Date' being printet as well.
               
		tmp = :column(v) << get property("notes");
               
		Control Chart Builder(
			Show Two Shewhart Charts(0),
			Show Control Panel(0),
			Include Missing Categories(0),
			Name("AIAG (Ppk) Labeling")(1),
			Variables(Y(:Column(v))),
			Chart(
				Points(Statistic("Individual")),
				Limits(Show Lower Limit(tmp == "Two limits"), Sigma("Moving Range"), Zones(1)),
				Warnings(Test 1(0), Test 5(1), Test Beyond Limits(1))
			),

		);
	);
           
	vlb = V List Box(ob = Outline Box("Cpk estimates and print of data"));
);


What should I add to my script ? 
2 REPLIES 2
ConvergentWhale
Level III

Re: Maintain the correct zones

*below the average not over the average . 
example : 

ConvergentWhale_0-1718611938662.pngConvergentWhale_0-1718611938662.png

Here you can see that there is no LCL, thus i want to remove the zones below the green line, but i want to keep the zones above the green line. Also, when i have points on the A zone below the average, I don't want to have alerts because there is no LCL. Does someone knows how to do it? 

 

jthi
Super User

Re: Maintain the correct zones

I think this would require to you script those zones and shaded zones (it might be easier to do this in Graph Builder rather than in Control Chart Builder)

-Jarmo

Recommended Articles