cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
‘New to using JMP? Hit the ground running with the Early User Edition of Discovery Summit – register now, free of charge.
Register for our Discovery Summit 2024 conference, Oct. 21-24, where you’ll learn, connect, and be inspired.
Choose Language Hide Translation Bar
BHarris
Level VI

Making Graph Builder's "Size" scale to axes

Suppose I have a dataset of flaws found on a surface of manufactured products that looks like this:

 

SNX(cm)Y(cm)Diameter(cm)
00012.31.150.04
00012.70.440.12
00011.52.60.35
00025.41.90.17
00023.14.10.59

 

In Graph Builder given that I Local-Data-Filter the SN, and plot X(cm)->X, Y(cm)->Y, and Diameter(cm)->Size, is there a way to make the resulting dot sizes be drawn to scale on the plot?

 

4 REPLIES 4
Byron_JMP
Staff

Re: Making Graph Builder's "Size" scale to axes

easy solution, but not perfectly scaled

Byron_JMP_0-1723662764659.png

Solving the problem with just a little clicking around:

In graph builder I put X and Y on the X and Y axis boxes, then drug SN to the color role and Diameter to the size role.

 

Here's what the script would look like:

Graph Builder(
	Size( 409, 391 ),
	Variables(
		X( :"X(cm)"n ),
		Y( :"Y(cm)"n ),
		Color( :SN ),
		Size( :"Diameter(cm)"n )
	),
	Elements( Points( X, Y, Legend( 9 ) ) )
);

 

JMP Systems Engineer, Health and Life Sciences (Pharma)
BHarris
Level VI

Re: Making Graph Builder's "Size" scale to axes

Looks like you replicated the process in the question well.  I was hoping someone might know of a shift-click option or something else that would help with the scaling.

jthi
Super User

Re: Making Graph Builder's "Size" scale to axes

I think you might have to do this with a graphic script. Below is very quick and hacky solution, it can give an idea what you could possibly do

Names Default To Here(1);

dt = New Table("Untitled",
	Add Rows(5),
	Compress File When Saved(1),
	New Column("SN", Numeric, "Continuous", Format("Best", 12), Set Values([1, 1, 1, 2, 2])),
	New Column("X(cm)", Numeric, "Continuous", Set Values([2.2999999999999998, 2.7000000000000002, 1.5, 5.4000000000000004, 3.1000000000000001])),
	New Column("Y(cm)", Numeric, "Continuous", Set Values([1.1499999999999999, 0.44, 2.6000000000000001, 1.8999999999999999, 4.0999999999999996])),
	New Column("Diameter(cm)",
		Numeric,
		"Continuous",
		Set Values([0.040000000000000001, 0.12, 0.34999999999999998, 0.17000000000000001, 0.58999999999999997])
	)
);

gb = dt << Graph Builder(
	Size(518, 454),
	Show Control Panel(0),
	Lock Scales(1),
	Variables(X(:"X(cm)"n), Y(:"Y(cm)"n), Size(:"Diameter(cm)"n)),
	Elements(Points(X, Y, Legend(5))),
	Local Data Filter(Add Filter(columns(:SN), Modeling Type(:SN, Nominal)))
);

frame = Report(gb)[FrameBox(1)];

Eval(EvalExpr(
	frame << Add Graphics Script(
		cur_gb = Expr(Report(gb));
		fb = cur_gb[FrameBox(1)];
		ms = fb << Find Seg(Marker Seg(1));
		xs = ms << Get X Values;
		ys = ms << Get Y Values;
		For(i = 1, i <= N Items(xs), i++,
			dt = cur_gb << Get Data Table;
			m_rows = dt << Get Rows Where(:"X(cm)"n == xs[i] & :"Y(cm)"n);
			diam = dt[m_rows, "Diameter(cm)"][1];
			Circle({xs[i], ys[i]}, diam/2);
		);
	);	
));

jthi_3-1723663153330.png

 

Also read how Circle's radius behaves https://www.jmp.com/support/help/en/18.0/#page/jmp/graphics-functions.shtml?os=win&source=applicatio...

-Jarmo
BHarris
Level VI

Re: Making Graph Builder's "Size" scale to axes

Thanks, @jthi -- you obviously have an impressive command of jsl! 

 

This feels like a capability that JMP should have, and seems like it would be easy to fold into the marker size settings (at least from a UI perspective).  I'll add it to the wish-list.