cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Don’t miss your chance to experience Discovery Summit Europe at our best available rate! Early bird registration through 31 Oct.
  • Graph Builder Toolbar streamlines interactive graphing. Creates shortcuts on Report and GraphBuilder Helpers toolbars. Download and install the extension.
  • JMP will suspend normal business operations for our Rest and Recharge Day on Friday, October 2, 2026.
    Regular business hours will resume on Monday, October 5, 2026.

Discussions

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

Plotting conditionally

Hi JMP Community!

 

I have the following piece of code as part of an add-in I made:

 

Report7 = Platform(
				dt,
				gb7 = Graph Builder(
				        Size( 632, 571 ),
					Show Control Panel( 0 ),
					Fit to Window( "Maintain Aspect Ratio" ),
					Variables( X( :Order No. ),
						Y( :S0a value, Position( 1 ) ),
						Y( :S1a value, Position( 1 ) ),
						Y( :S1b value, Position( 1 ) ),
						Y( :S1c value, Position( 1 ) ),
						Y( :S2a value, Position( 1 ) ),
						Y( :S3a value, Position( 1 ) ),
						Y( :S4b value, Position( 1 ) ) ),
					Elements(
						Line( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Y( 5 ),
							Y( 6 ), Y( 7 ), Legend( 11 ) )
						),
				)
);

The issue is that I don't always have all the columns that I'm asking the add-in to plot on the y-axis (e.g. the data table might only have S0a - S1c rather than S0a - S4b). When this is the case, the resulting plot is just a histogram of the x-axis column (i.e. of "Order No.").

 

Is there a way of making the code plot whatever columns are available and automatically ignore the ones that aren't? I'm open to other ideas as well.

 

Thank you in advance!

 

Ahmed

1 ACCEPTED SOLUTION

Accepted Solutions
ih
Super User (Alumni) ih
Super User (Alumni)

Re: Plotting conditionally

This might be on option, you would need to populate the variables cols with the actual list you want to include:

 

Names default to here(1);

dt = Open("$Sample_data/probe.jmp");

//Variables to hold the dynamic parts of the graph builder expresssion
Expr1 = "";
Expr2 = "";

// Pick columns to include
cols = ( dt << get column names() )[random shuffle(8::397)[1::5]];

//Populate expressions
for(c=1, c<= n items(cols), c++,
	Expr1 = Expr1 || "Y( Column( \!"" || cols[c] || "\!" ), Position(1) ),";
	Expr2 = Expr2 || "Y( " || char( c ) || " ),";
);

Eval( Parse( substitute(
	//the graph builder script as a string with 'dummy variables' where the
	//expressions created earlier will go
	"gb = Graph Builder(
		Size( 838, 391 ),
		Variables(
			X( :DELL_RPPBR ),
			Expr1_
		),
		Elements( Line( X, Expr2_ Legend( 10 ) ) ),
		Local Data Filter(
			Add Filter(
				columns( :DELL_RPPBR ),
				Where( :DELL_RPPBR >= -1 & :DELL_RPPBR <= 0.483837991952896 )
			)
		)
	)",
	//replace the 'dummy variables'
	"Expr1_",
	Expr1,
	"Expr2_",
	Expr2
) ) );

View solution in original post

2 REPLIES 2
ih
Super User (Alumni) ih
Super User (Alumni)

Re: Plotting conditionally

This might be on option, you would need to populate the variables cols with the actual list you want to include:

 

Names default to here(1);

dt = Open("$Sample_data/probe.jmp");

//Variables to hold the dynamic parts of the graph builder expresssion
Expr1 = "";
Expr2 = "";

// Pick columns to include
cols = ( dt << get column names() )[random shuffle(8::397)[1::5]];

//Populate expressions
for(c=1, c<= n items(cols), c++,
	Expr1 = Expr1 || "Y( Column( \!"" || cols[c] || "\!" ), Position(1) ),";
	Expr2 = Expr2 || "Y( " || char( c ) || " ),";
);

Eval( Parse( substitute(
	//the graph builder script as a string with 'dummy variables' where the
	//expressions created earlier will go
	"gb = Graph Builder(
		Size( 838, 391 ),
		Variables(
			X( :DELL_RPPBR ),
			Expr1_
		),
		Elements( Line( X, Expr2_ Legend( 10 ) ) ),
		Local Data Filter(
			Add Filter(
				columns( :DELL_RPPBR ),
				Where( :DELL_RPPBR >= -1 & :DELL_RPPBR <= 0.483837991952896 )
			)
		)
	)",
	//replace the 'dummy variables'
	"Expr1_",
	Expr1,
	"Expr2_",
	Expr2
) ) );
A_Zaid
Level III

Re: Plotting conditionally

This did the job! Thanks @ih!

Recommended Articles