cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
Choose Language Hide Translation Bar
View Original Published Thread

Graph Builder how do i make it detect the variables and insert them in?

Dyan
Level I

 

        NX = 5; //NX NY are to specify the matrix indices for Graph builder
		NY = 5;
			
		If( Is Missing(colX1[i]), NX = NX - 1 );
		If( Is Missing(colX2[i]), NX = NX - 1 );
		If( Is Missing(colX3[i]), NX = NX - 1 );
		If( Is Missing(colX4[i]), NX = NX - 1 );
		
		show(NX);
		
		If( Is Missing(colY1[i]), NY = NY - 1 );
		If( Is Missing(colY2[i]), NY = NY - 1 );
		If( Is Missing(colY3[i]), NY = NY - 1 );
		If( Is Missing(colY4[i]), NY = NY - 1 );
		
		show(NY);
		
		x_vars = {}; // make empty list for x and y variables 
		y_vars = {};
		
		X = colX[i];
		X1 = colX1[i];
		X2 = colX2[i];
		X3 = colX3[i];
		X4 = colX4[i];
		
		Y = colY[i];
		Y1 = colY1[i];
		Y2 = colY2[i];
		Y3 = colY3[i];
		Y4 = colY4[i];
		
		If( !Is Missing(colX[i]), Insert Into( x_vars, X ) ); 
		If(	!Is Missing(colX1[i]), Insert Into( x_vars, X1) );
		If(	!Is Missing(colX2[i]),Insert Into( x_vars, X2) );
		If(	!Is Missing(colX3[i]), Insert Into( x_vars, X3) );
		If(	!Is Missing(colX4[i]), Insert Into( x_vars, X4) ); 

		If( !Is Missing(colY[i]), Insert Into( y_vars, Y) ); 
		If(	!Is Missing(colY1[i]), Insert Into( y_vars, Y1) );
		If(	!Is Missing(colY2[i]), Insert Into( y_vars, Y2) );
		If(	!Is Missing(colY3[i]), Insert Into( y_vars, Y3) );
		If(	!Is Missing(colY4[i]), Insert Into( y_vars, Y4) );  
		
		show(x_vars);
		show(y_vars);

		GB = Current Data Table() << Graph Builder(
			Size( 621, 472 ),
			Variables(
				X(x_vars),
				Y(y_vars)	
			),
			// the for loops is used together with the NX and NY part from above
			For( i = 1, i <= NX, i++,
				For( j = 1, j <= NY , j++,
					If( i == 1 & j == 1,
						Elements(
							Position( i, j ),
							Points( X, Y, Legend( 67 ) ),
							Smoother( X, Y, Legend( 68 ) )
						),
						Elements(
							Position( i, j ),
							Points( X, Y, Legend( 68 + (i - 1) * 5 + (j - 2) ) ),
							Smoother( X, Y, Legend( 69 + (i - 1) * 5 + (j - 2) ) )
						)
					)
				)
			),
			
			SendToReport(
				Dispatch(
					{},
					"Graph",
					ScaleBox,
					{Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
				)
			)
			
		);

Hi all, how can script it in such a way that it detects which of my variables is not empty and adds it in the X( ) and Y( ) of Variables shown below. 

What i have now is shown above where it will detect which is not missing and add it to a list then from that list try to add it into variables shown below how do i continue? 

 

thanks for reading 

 

            Variables(
				X(x_vars),
				Y(y_vars)	
			),

 

 

1 REPLY 1


Re: Graph Builder how do i make it detect the variables and insert them in?

Hi @Dyan ,

Is the following graphic what you want to create? If so, here is a sample script.

111424.png

x_vars = "";
y_vars = "";
		
xlist = {X, X1, X2, X3, X4} = Eval List( {colX[i], colX1[i], colX2[i], colX3[i], colX4[i]} );
ylist = {Y, Y1, Y2, Y3, Y4} = Eval List( {colY[i], colY1[i], colY2[i], colY3[i], colY4[i]} );

For( x_i = 1, x_i <= N Items( xlist ), x_i++,
	If( !Is Empty( xlist[x_i] ),
		x_vars = x_vars || "X(" || Char( Eval Expr( xlist[x_i] ) ) || "),"
	)
);

For( y_i = 1, y_i <= N Items( ylist ), y_i++,
	If( !Is Empty( ylist[y_i] ),
		y_vars = y_vars || "Y(" || Char( Eval Expr( ylist[y_i] ) ) || "),"
	)
);
		
Show( x_vars );
Show( y_vars );

Eval(
	Parse(
		Eval Insert( "\[GB = Current Data Table() << Graph Builder(
				Size( 621, 472 ),
				Variables(  ^x_vars^  ^y_vars^  ), 		
				)
	;]\" )
	)
);

The following discussion page refers to a similar question. https://community.jmp.com/t5/Discussions/JSL-Script-Graph-Builder-to-plot-all-columns-of-a-data-tabl... 

You can also learn about expressions on the page below. https://community.jmp.com/t5/JSL-Cookbook-Archived/Insert-one-expression-into-another-using-Eval-Ins... 

I hope it helps.