cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Browse apps to extend the software in the new JMP Marketplace
Choose Language Hide Translation Bar
drew_baumgartel
Level III

Control format and review of report output

I have multiple versions of JMPPro on my computer, including JMP 14.3 and JMP 16.0. I don't an option in any version for custom formatting in a report window. For example, suppose I use the bivariate (fit Y by X) platform with a "by" column, and there are 80 unique values in the "by" column. Including all plots in a single column or in a single row will slow down review of the plots. Performing a drag and drop would be tedious. What I'd like to be able to do is:

 

- Specify the number of rows and plots per row in report output

- In the case where there are two "by" columns, have the option to put all plots from the first "by" column in a given row in the report output. For example, suppose there are two "by" columns, creating 5 unique combinations: column A has values {tea, coffee} and column B has values {milk, honey, sugar}. Nowhere in the data table does there appear a combination of coffee and honey. The first row in the report output would contain 3 plots for "tea", one each for milk, honey, and sugar. The second row in the report output would contain 2 plots for "coffee", one each for milk and sugar.

 

My questions are:


- Is there a way to do this natively in JMP?

- If not, are there any scripts/add-ins available that allow you to format a report window this way?

 

I think I could script it myself, but it would be time-consuming, and am hoping for an easy button.

2 REPLIES 2
jthi
Super User

Re: Control format and review of report output

No native ways come to my mind (but there might still be some), so here are some script ideas to maybe get you started:

 

To just control how many reports are in each row you should be able to just use Lineup Box with N Col:

Names Default To Here(1);

dt = Open("$SAMPLE_DATA/Food Journal.jmp");

maxValsPerRow = 4;
nw = New window("", Lineup Box(N Col(maxValsPerRow),
		Bivariate(Y(:Calories), X(:Fat), By(:Food Category, :Meal))
));

 

 

For two "by" columns and to break into new rows when By changes (note Eval(EvalExpr()), usage):

 

Names Default To Here(1);

dt = Open("$SAMPLE_DATA/Food Journal.jmp");

uniqVals = Associative Array(Column(dt, "Meal")) << get keys;
maxValsPerRow = 15;
nw = New window("", vlb = V List box());

For(i = 1, i <= N Items(uniqVals), i++,
	vlb << Append(Eval(EvalExpr(
		Lineup Box(N Col(Expr(maxValsPerRow)), 
			Bivariate(Y(:Calories), X(:Fat), By(:Food Category, :Meal), Where(:Meal == Expr(uniqVals[i])))
		)
	))
));

 

 

-Jarmo
txnelson
Super User

Re: Control format and review of report output

Using the Fit Group() function, it is real easy to change the layout to 3 reports across

byages.PNG

Here is the simple JSL

names default to here(1);

// Open Data Table: big class.jmp
// → Data Table( "big class" )
Open( "$SAMPLE_DATA/big class.jmp" );

// For illustration, limit ages to only 3 levels
// Select matching cells
Data Table( "big class" ) << Select Where( :age == 12 | :age == 13 | :age == 14 );

// Subset data table
// → Data Table( "Subset of big class" )
Data Table( "big class" ) << Select Where( :age == 12 | :age == 13 | :age == 14 )
 << Subset( Selected Rows( 1 ), Selected columns only( 0 ) );
 
// Close Data Table: big class
Close( "big class" );

fg = fit group(
Bivariate( Y( :height ), X( :weight ), By( :sex, :age ) ));
fg<<arrange in rows(3);

I also suggest you look at Response Screening as a possible way for you to look at the plots

     Analyze=>Screening=>Response Screening

Jim