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.
See how to use to use Text Explorer to glean valuable information from text data at April 25 webinar.
Choose Language Hide Translation Bar
View Original Published Thread

How do I use jsl add X variable to graphbuilder

Wei1
Level II

Dear all:

I want to create a parallel graph
The X-axis is part of the column in the table
How to create using jsl

 

I also try add variable() but cannot work

 

thanks

2 ACCEPTED SOLUTIONS

Accepted Solutions
jthi
Super User


Re: How do I use jsl add X variable to graphbuilder

<< Add Variable should work but some cases can be more complicated

Names Default To Here(1); 

dt = open("$SAMPLE_DATA/Big Class.jmp");

gb = dt << Graph Builder(
	Size(528, 448),
	Show Control Panel(0),
	Variables(X(:weight), X(:height, Position(1))),
	Elements(Parallel(X(1), X(2), Legend(9)))
);

wait(1); // for demo purposes

gb << Add Variable({:age, Role("X"), Position(1)});
-Jarmo

View solution in original post

jthi
Super User

Re: How do I use jsl add X variable to graphbuilder

If you build the parallel plot by hand and check the script

Graph Builder(
	Size(490, 448),
	Show Control Panel(0),
	Variables(
		X(:X__1),
		X(:X__2, Position(1)),
		X(:X__3, Position(1)),
		X(:X__4, Position(1)),
		X(:X__5, Position(1))
	),
	Elements(Parallel(X(1), X(2), X(3), X(4), X(5), Legend(18)))
)

and then compare it to your script (build it and then get script from red triangle menu)

Graph Builder(
	Size(1854, 917),
	Show Control Panel(0),
	Variables(
		X(:X__1),
		X(:X__2, Position(1)),
		X(:X__3, Position(1)),
		X(:X__4, Position(1)),
		X(:X__5, Position(1))
	),
	Elements(
		Points(X(1), X(2), X(3), X(4), X(5), Legend(5)),
		Parallel(Legend(4), Combine Sets(1))
	)
)

There are few big differences: you still have points left and you only haven't defined X() in your script.

 

If this is what you wish to do, I would suggest building the graph builder expression and not using << Add Variable and << Add Element as it can be easier

Names Default To Here(1);

dt = Current Data Table();

colnames = dt << get column names("character");
Remove From(colnames, N Items(colnames));
Remove From(colnames, 1);

variables_expr = Expr(Variables(X(:X__1)));
parallel_expr = Expr(Parallel(X(1)));

For Each({colname, idx}, colnames,
	xpart = EvalExpr(X(Expr(NameExpr(AsColumn(dt, colname))), Position(1)));
	Insert Into(variables_expr, Name Expr(xpart));
	
	Eval(EvalExpr(
		Insert Into(parallel_expr, Name Expr(X(Expr(idx + 1))));
	));
);

Insert Into(parallel_expr, Name Expr(Legend(18)));
elements_expr = Expr(Elements());
InsertInto(elements_expr, NameExpr(parallel_expr));


gb = Eval(Substitute(
		Expr(dt << Graph Builder(
			Size(1854, 917),
			Show control Panel(0),
			_variables_,
			_elements_,
			Color(:color),
			Size(:Amt)
	)),
	Expr(_variables_), Name Expr(variables_expr),
	Expr(_elements_), Name Expr(elements_expr)
));

-Jarmo

View solution in original post

3 REPLIES 3
jthi
Super User


Re: How do I use jsl add X variable to graphbuilder

<< Add Variable should work but some cases can be more complicated

Names Default To Here(1); 

dt = open("$SAMPLE_DATA/Big Class.jmp");

gb = dt << Graph Builder(
	Size(528, 448),
	Show Control Panel(0),
	Variables(X(:weight), X(:height, Position(1))),
	Elements(Parallel(X(1), X(2), Legend(9)))
);

wait(1); // for demo purposes

gb << Add Variable({:age, Role("X"), Position(1)});
-Jarmo
Wei1
Level II

Re: How do I use jsl add X variable to graphbuilder

Thanks,

 

Have other question,

 

Now I can use Add Variable to add X variables to graph builder,

but cannot change to parallel graph for add X variable (auto) by use Add Element

 

Please refer to the attachment

 

thanks

Names Default To Here(1);

dt=Current Data Table();

colnames=dt<< get column names( "character" );
remove from(colnames,nitems(colnames));
remove from(colnames,1);

variables_expr = Expr(Variables(X(:X__1)));

gb = dt << Graph Builder(
Size( 1854, 917 ),
 Show control Panel(0),
 Variables(X(:X__1)),
 Color( :color ),				
		Size( :Amt )
);

gb << inval;

For Each({x_col, idx}, colnames,
 Eval(EvalExpr(
  gb << Add Variable({Expr(Name Expr(As Column(dt, x_col))), Role("X"),position(1)})
 ));


);

// question
gb << Add Element( 1, 1, {Type( "Parallel" ),Legend( 4 ),Combine Sets( 1 )} );


gb << Update window;
jthi
Super User

Re: How do I use jsl add X variable to graphbuilder

If you build the parallel plot by hand and check the script

Graph Builder(
	Size(490, 448),
	Show Control Panel(0),
	Variables(
		X(:X__1),
		X(:X__2, Position(1)),
		X(:X__3, Position(1)),
		X(:X__4, Position(1)),
		X(:X__5, Position(1))
	),
	Elements(Parallel(X(1), X(2), X(3), X(4), X(5), Legend(18)))
)

and then compare it to your script (build it and then get script from red triangle menu)

Graph Builder(
	Size(1854, 917),
	Show Control Panel(0),
	Variables(
		X(:X__1),
		X(:X__2, Position(1)),
		X(:X__3, Position(1)),
		X(:X__4, Position(1)),
		X(:X__5, Position(1))
	),
	Elements(
		Points(X(1), X(2), X(3), X(4), X(5), Legend(5)),
		Parallel(Legend(4), Combine Sets(1))
	)
)

There are few big differences: you still have points left and you only haven't defined X() in your script.

 

If this is what you wish to do, I would suggest building the graph builder expression and not using << Add Variable and << Add Element as it can be easier

Names Default To Here(1);

dt = Current Data Table();

colnames = dt << get column names("character");
Remove From(colnames, N Items(colnames));
Remove From(colnames, 1);

variables_expr = Expr(Variables(X(:X__1)));
parallel_expr = Expr(Parallel(X(1)));

For Each({colname, idx}, colnames,
	xpart = EvalExpr(X(Expr(NameExpr(AsColumn(dt, colname))), Position(1)));
	Insert Into(variables_expr, Name Expr(xpart));
	
	Eval(EvalExpr(
		Insert Into(parallel_expr, Name Expr(X(Expr(idx + 1))));
	));
);

Insert Into(parallel_expr, Name Expr(Legend(18)));
elements_expr = Expr(Elements());
InsertInto(elements_expr, NameExpr(parallel_expr));


gb = Eval(Substitute(
		Expr(dt << Graph Builder(
			Size(1854, 917),
			Show control Panel(0),
			_variables_,
			_elements_,
			Color(:color),
			Size(:Amt)
	)),
	Expr(_variables_), Name Expr(variables_expr),
	Expr(_elements_), Name Expr(elements_expr)
));

-Jarmo