cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • New to JMP? Join us Sept. 23-24 for the Early User Edition of Discovery Summit, tailor-made for new users. Register now for free!
  • Your voice matters! Tell us how you prefer to receive JMP updates, so we can tailor our communication to your needs. Take short survey.
  • See how to access JMP Marketplace - and - find, create & share add-ins to extend your JMP. Watch video.

Discussions

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

expr and evalexpr for Graph Builder gradient limits

I am trying to set up a script that will generate a Graph Builder with gradient min and max equal to to Quantile values of the Column being plotted.

 

Unfortunately, the expr and evalexpr syntax I am using doesn't work for the matrix in "Scale Values".

 

I need help.

 

dt0 = current data table();
param = "Voltage";
colp = dt0:param;
graph_high = Quantile( 0.975, column(dt0, param) << get as matrix() );
graph_low = Quantile( 0.025, column(dt0, param) << get as matrix() );

cmd = expr(
	Graph Builder(
		Size( 550, 550 ),
		Show Control Panel( 0 ),
		Variables(
			X( :x ),
			Y( :y ),
			Color( :expr(param) )
		),
		Elements( Points( X, Y, Legend( 6 ) ) ),
		SendToReport(
			Dispatch(
				{},
				"400",
				ScaleBox,
				{Legend Model(
					6,
					Properties(
						0,
						{gradient( {Scale Values( [expr(graph_low) expr(graph_high)] )} )}, // *Need Help Here*
						Item ID( expr(param), 1 )
					)
				)}
			)
		)
	);
);

eval(evalexpr(cmd));
1 ACCEPTED SOLUTION

Accepted Solutions
ErraticAttack
Level VI

Re: expr and evalexpr for Graph Builder gradient limits

I don't have your data to validate, but this should work:

 

dt0 = current data table();
param = "Voltage";
colp = dt0:param;
graph_high = Quantile( 0.975, column(dt0, param) << get as matrix() );
graph_low = Quantile( 0.025, column(dt0, param) << get as matrix() );
val matrix = [](1,0) || graph_low || graph_high;

cmd = expr(
	Graph Builder(
		Size( 550, 550 ),
		Show Control Panel( 0 ),
		Variables(
			X( :x ),
			Y( :y ),
			Color( :expr(param) )
		),
		Elements( Points( X, Y, Legend( 6 ) ) ),
		SendToReport(
			Dispatch(
				{},
				"400",
				ScaleBox,
				{Legend Model(
					6,
					Properties(
						0,
						{gradient( {Scale Values( Expr( val matrix ) )} )}, // *Need Help Here*
						Item ID( expr(param), 1 )
					)
				)}
			)
		)
	);
);

eval(evalexpr(cmd));
Jordan

View solution in original post

2 REPLIES 2
ErraticAttack
Level VI

Re: expr and evalexpr for Graph Builder gradient limits

I don't have your data to validate, but this should work:

 

dt0 = current data table();
param = "Voltage";
colp = dt0:param;
graph_high = Quantile( 0.975, column(dt0, param) << get as matrix() );
graph_low = Quantile( 0.025, column(dt0, param) << get as matrix() );
val matrix = [](1,0) || graph_low || graph_high;

cmd = expr(
	Graph Builder(
		Size( 550, 550 ),
		Show Control Panel( 0 ),
		Variables(
			X( :x ),
			Y( :y ),
			Color( :expr(param) )
		),
		Elements( Points( X, Y, Legend( 6 ) ) ),
		SendToReport(
			Dispatch(
				{},
				"400",
				ScaleBox,
				{Legend Model(
					6,
					Properties(
						0,
						{gradient( {Scale Values( Expr( val matrix ) )} )}, // *Need Help Here*
						Item ID( expr(param), 1 )
					)
				)}
			)
		)
	);
);

eval(evalexpr(cmd));
Jordan
LaserGuy
Level II

Re: expr and evalexpr for Graph Builder gradient limits

Thanks a lot. This worked.

 

Now that you gave me the idea of creating a matrix using variables, and then putting that matrix into the Graph Builder script, I decided to play around. It looks like I don't need to use Expr() around the "val matrix".

 

I find that this works as well:

dt0 = current data table();
param = "Voltage";
colp = dt0:param;
graph_high = Quantile( 0.975, column(dt0, param) << get as matrix() );
graph_low = Quantile( 0.025, column(dt0, param) << get as matrix() );
val matrix = matrix( {graph_low, graph_high} );

cmd = expr(
	Graph Builder(
		Size( 550, 550 ),
		Show Control Panel( 0 ),
		Variables(
			X( :x ),
			Y( :y ),
			Color( :expr(param) )
		),
		Elements( Points( X, Y, Legend( 6 ) ) ),
		SendToReport(
			Dispatch(
				{},
				"400",
				ScaleBox,
				{Legend Model(
					6,
					Properties(
						0,
						{gradient( {Scale Values( val matrix )} )},
						Item ID( expr(param), 1 )
					)
				)}
			)
		)
	);
);

eval(evalexpr(cmd));

Recommended Articles