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
Jackie_
Level VI

Side by side distribution plots for Tall table

Hi,

 

Is it possible to plot side by distribution plots in one graph with tall table?  something like Graph Builder?

Jackie__0-1692280255048.png

Something like this?

Jackie__2-1692280598398.png

 

BR, 

Jackie

18 REPLIES 18
Jackie_
Level VI

Re: Side by side distribution plots

The problem is you cannot plots all the processes in the same oneway plot

txnelson
Super User

Re: Side by side distribution plots

It is a very simple to stack the data into a new table, and then to run the Oneway's from it.  

Jim
Jackie_
Level VI

Re: Side by side distribution plots

Hi Jim @txnelson , Stack() will essentially transpose the table. I think this approach works but wondering what if there's a tall data table with >1M Rows?. I think transposing into Data columns wouldn't be best.

For eg: I have a DT with 229 Columns and 252k Rows (Tall table). If I stacked 252k rows then the final data table will result 56M rows 

 

 

Jackie__2-1692292640714.png   

 

Stack => 56M rows (not robust)

Jackie__3-1692292700901.png

 

 

 

txnelson
Super User

Re: Side by side distribution plots

A table with 229 columns and 250k rows takes about the same amount of memory as 1 column and 56M rows.  The issue is can you take advantage of the built in features of JMP.  Not all Platforms support data laid out in multiple columns as well as they do with tall data tables.  Dealing with the amount of data you are projecting will have other issues.  Power of statistical tests, hardware's precision limitations are just a couple of them.

Jim
ron_horne
Super User (Alumni)

Re: Side by side distribution plots

Hi @Jackie_ ,
@Jordan_Hiller offers a practical solution, i would only add the Compare Densities option as follows:

// Open Data Table: Semiconductor Capability.jmp
// → Data Table( "Semiconductor Capability" )
Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );

// Report snapshot: Semiconductor Capability - Fit Y by X of NPN1 by lot_id
Data Table( "Semiconductor Capability" ) << Oneway(
	Y( :NPN1 ),
	X( :lot_id ),
	Compare Densities( 1 ),
	Histograms( 1 )
);

it will give you a graph like this:

ron_horne_0-1692314517787.png

 


let us know if it worked ?

Jackie_
Level VI

Re: Side by side distribution plots

Stack() works

Jackie_
Level VI

Re: Side by side distribution plots

Hi @ron_horne @txnelson @Jordan_Hiller,

 

Is there a way to get the Spec limits (USL and LSL) from the Column properties of the datatable in the stack table and add in the graph builder? 
For instance, if I make a plot with a X group, and I want to put different reference lines for each group/panel only. Is that possible? 

Jackie__0-1692793304692.png

Thanks,

Jackie

Re: Side by side distribution plots

Here's an approach:

1) Get the limits from the original data table using the "Manage Limits" utility, save as tall limits table.

2) Use a virtual join to link the stacked data with the limits table

3) Make your graph, you'll need to use the "variables" panel in the graph element options.

 

Stacked table - Graph Builder.png

 

Names Default To Here( 1 );

//Open Data Table: Stacked table.jmp
stk = Open( "$DOWNLOADS/Stacked table.jmp" );

//Open Data Table: datatable.jmp
dt = Open( "$DOWNLOADS/datatable.jmp" );

//Report snapshot: datatable - Manage Limits
obj = dt <<
Manage Limits( Process Variables( Column Group( "Tests" ) ) );
lim = obj << Save to Tall Limits Table;
r= obj << Report;
r << Close Window;

//Change column link ID: Variable
lim:Variable << Set Property( "Link ID", 1 );

//Change column link reference: Label
stk:Label <<
Set Property(
	"Link Reference",
	{Reference Table( lim ),
	Options( "Use Linked Column Name" )}
);

//Report snapshot: Stacked table - Graph Builder
stk << Graph Builder(
	Size( 518, 543 ),
	Show Control Panel( 0 ),
	Variables(
		X( :wafer ID ),
		Y( :Data ),
		Y(
			Referenced Column(
				"LSL",
				Reference( Column( :Label ), Reference( Column( :LSL ) ) )
			),
			Position( 1 )
		),
		Y(
			Referenced Column(
				"USL",
				Reference( Column( :Label ), Reference( Column( :USL ) ) )
			),
			Position( 1 )
		),
		Group X( :Label )
	),
	Elements(
		Points( X, Y( 1 ), Legend( 8 ) ),
		Line( X, Y( 2 ), Y( 3 ), Legend( 9 ) )
	),
	Local Data Filter(
		Add Filter(
			columns( :Label ),
			Where( :Label == {"Currents A1", "Currents A3", "Currents A9"} ),
			Display( :Label, N Items( 15 ), Find( Set Text( "" ) ) )
		)
	)
);
Jackie_
Level VI

Re: Side by side distribution plots

Thanks Jordan