cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Image to Table JMP extension imports single or batch images as data tables. Useful to extract curves from pictures or convert image data to curve data to use in analyses like Functional Data Explorer. Download and install the extension.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
Thierry_S
Super User

Add Summary Table at Bottom of Plots in Graph Builder > Multi Panel Aggregated Plots?

Hi JMP Community,

I have written a simple (and a bit clunky) script  that assembles multiple GB plots into a window using a LineUpBox into which I append the FrameBox from each plot: it works perfectly running across 182 biomarkers and assembling the plots for which certain conditions are met; (see below). Of note, I cannot easily share the data table associated with this script because the of the confidential nature of the data.

Names Default to Here (1);

dt = Current Data Table ();

CLX = dt << get column names (string);

CList = {};

For (i= 1, i <= N Items (CLX), i++, insert into (CList, substitute (CLX[i], "LSMEAN ", "")));

gbe = Expr (dt << Graph Builder(
				Size( 360, 360 ),
				Fit to Window( "Off" ),
				Level Frame Color( "Medium Dark Gray" ),
				Level Spacing Color( "Medium Dark Gray" ),
				Level Underline( 1 ),
				Page Level Underline( 0 ),
				Spacing Borders( 1 ),
				Variables(
					X( :Name( "DURATION (Week)" ) ),
					Y( _YS_ ),
					Overlay( :ARM ),
					Interval( _STE_ )
				),
				Elements(
					Points( X, Y, Legend( 5 ) ),
					Line( X, Y, Interval( 0 ), Legend( 6 ) )
				),
				SendToReport(
					Dispatch(
						{},
						"DURATION (Week)",
						ScaleBox,
						{Min( -1.5 ), Max( 10 ), Inc( 2 ), Minor Ticks( 1 )}
					),
					
					Dispatch(
						{},
						"Graph Builder",
						FrameBox,
						{Marker Size( 6 ), Add Graphics Script(
							2,
							Description( "Script" ),
							Text Color (Black);
							Pen Color (black);
							Pen size (2);
							Line style ("Dotted");
							H Line (0);
							Text Size (14);
							Text( Center Justified, {4, _BPY_}, _LNAME_);
							Text size (12);
							Text Color( blue );
							Text( Center Justified, {2, _TPY1_}, _P1_);
							Text( Center Justified, {8, _TPY1_}, _P2_);
							Text Color( Green );
							Text( Center Justified, {2, _TPY2_}, _P3_);
							Text( Center Justified, {8, _TPY2_}, _P4_);
							Text Color( purple );
							Text( Center Justified, {2, _TPY3_}, _P5_);
							Text( Center Justified, {8, _TPY3_}, _P6_);
						), Grid Line Order( 5 ), Reference Line Order( 6 )}
					)
				)
			)
		);	


mylbox = Lineup Box (N Col (8));

For (i = 4, i <= 185, i++, //185
	
		YCOL = Column (i);
		STDE = Column (i+182);
		LABEL = CList [i];
		
		P1 = Column (dt, i+364) [2];
		P2 = Column (dt, i+364) [3];
		P3 = Column (dt, i+364) [5];
		P4 = Column (dt, i+364) [6];
		P5 = Column (dt, i+364) [8];
		P6 = Column (dt, i+364) [9];
		
		PPBO1 = Column (dt, i+546) [5];
		PPBO2 = Column (dt, i+546) [6];
		PPBO3 = Column (dt, i+546) [8];
		PPBO4 = Column (dt, i+546) [9];

		PVAL1 = CHAR (format(P1, "PValue"));
		PVAL2 = CHAR (format(P2, "PValue"));
		PVAL3 = CHAR (format(P3, "PValue"));
		PVAL4 = CHAR (format(P4, "PValue"));
		PVAL5 = CHAR (format(P5, "PValue"));
		PVAL6 = CHAR (format(P6, "PValue"));
	
		gbx = substitute (Name Expr (gbe), 	Expr (_YS_), YCOL,
										Expr (_STE_), STDE,
										Expr (_TPY1_), 1,
										Expr (_TPY2_), 1,
										Expr (_TPY3_), 1,
										Expr (_BPY_), -1,
										Expr (_LNAME_), LABEL,
										Expr (_P1_), PVAL1,
										Expr (_P2_), PVAL2,
										Expr (_P3_), PVAL3,
										Expr (_P4_), PVAL4,
										Expr (_P5_), PVAL5,
										Expr (_P6_), PVAL6
										);
	
		gb = Eval (gbx);
		
		gbr = gb << report;
		
		YAxis = gbr [Axis Box (2)];
		YMax = YAxis << Get Max;
		YMin = YAxis << Get Min;
		
		gbr << close window;
		
		YRange = ABS (YMax - YMin);
		
		While (YRange <= 1.0,
			
			YMax = YMax + (YRange * 0.1);
			YMin = YMin - (YRange * 0.1);
			YRange = abs (YMax - YMin);
		);
		
		YMax = YMax + (YRange * 0.15);
		TOPY1 = YMax - (YRange * 0.1);
		TOPY2 = YMax - (YRange * 0.18);
		TOPY3 = YMax - (YRange * 0.26);
		BOTY = YMin + (YRange *0.1);
		
		gbx = substitute (Name Expr (gbe), 	Expr (_YS_), YCOL,
										Expr (_STE_), STDE,
										Expr (_TPY1_), TOPY1,
										Expr (_TPY2_), TOPY2,
										Expr (_TPY3_), TOPY3,
										Expr (_BPY_), BOTY,
										Expr (_LNAME_), LABEL,
										Expr (_P1_), PVAL1,
										Expr (_P2_), PVAL2,
										Expr (_P3_), PVAL3,
										Expr (_P4_), PVAL4,
										Expr (_P5_), PVAL5,
										Expr (_P6_), PVAL6
										);

	
	
		gb = Eval (gbx);
	
		gbr = gb << report;
		
		YAxis = gbr [Axis Box (2)];
		
		YAxis << Max (YMax);
		YAxis << Min (YMin);
		YAxis << Inc (round (YRange/9, 1));
		
		gbr << Set Title (LABEL);
		gbr [TextEditBox (1)] << Set text (LABEL);
		gbr [LegendBox (1)] << delete;

		
		fb = gbr [FrameBox (1)];
		
		if(	Minimum (P1, P2, P3, P4, P5, P6)<= 0.01 & 
			Maximum (	abs (YCOL[2]), abs (YCOL[3]), abs (YCOL[5]), abs (YCOL[6]),	abs (YCOL[8]), abs (YCOL[9]))>=0.2 &
			Minimum (PPBO1, PPBO2, PPBO3, PPBO4) <= 0.01, 
			mylbox << append (fb),.);
		
		gbr << close window;
	
);

New Window ("OUTPUT", mylbox);

Now, instead of writing the P Values / FDR onto the plots (see PVALs inserted as Text elements in the Graphics Script), I would like to append a summary table with these P Values / FDR below each plot. I have looked into the "Add Table" command but I'm not sure that it provides the formatting flexibility I need and therefore, I would like to learn if there is an alternate way to draw tables with more flexibility.

Any ideas, hints, or recommendations would be greatly appreciated.

Thanks,

TS

Thierry R. Sornasse
1 ACCEPTED SOLUTION

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

Re: Add Summary Table at Bottom of Plots in Graph Builder > Multi Panel Aggregated Plots?

Maybe consider constructing a Table Box with a combination of NumberColBox and StringColBox columns? You can even let users enter data right in those tables with NumberColEditBox.

 

You have quite a bit of control over formatting, including recreating many tables found in JMP platforms:

 

ih_0-1622580098002.png

 

View solution in original post

1 REPLY 1
ih
Super User (Alumni) ih
Super User (Alumni)

Re: Add Summary Table at Bottom of Plots in Graph Builder > Multi Panel Aggregated Plots?

Maybe consider constructing a Table Box with a combination of NumberColBox and StringColBox columns? You can even let users enter data right in those tables with NumberColEditBox.

 

You have quite a bit of control over formatting, including recreating many tables found in JMP platforms:

 

ih_0-1622580098002.png

 

Recommended Articles