Hello, I have an image which is a binary 2D matrix.
Is there a way I can graph it on JMP? The graph should show a black dot for ones and nothing for zeros.
Attached is the file that needs to be graphed.
Thaks for the help!
Here is another way to do this, with JSL and creating an image file
// data preparation, the data table needs some work to get it ready
_dt = Current Data Table();
_dt << Select rows( 1 );
_dt << delete rows;
For( ii = 1, ii <= N Cols( _dt ), ii++,
Column( _dt, ii ) << Set Name( "phase_" || Char( ii - 1 ) );
Column( _dt, ii ) << Set Data Type( Numeric );
Column( _dt, ii ) << Set Modeling Type( Continuous );
);
// Make an image file and display in new window with scaling control
// this assumes the entire table just has the binary columns
// get the binary values as a matrix
m = _dt << get as matrix;
// get the dimensions of the table/matrix
mdim = Dim( m );
// specify a minimum image size in pixels, this prevents the image from being
// too small to be useful
mininumimagepixeldim = [800 800];
// determine a scale factor to bring the size of the matrix up to the minimum dimensions
// specified above
scale_x = Ceiling( mininumimagepixeldim[2] / mdim[2] );
scale_y = Ceiling( mininumimagepixeldim[1] / mdim[1] );
// create a scaled image matrix, using the scale factors determined above
// and applying the direct product to scale up the image
r = 1 - Direct Product( m, J( scale_y, scale_x, 1 ) );
// create an image from the scaled image matrix
img = New Image( "rgb", {r, r, r} );
scalefactor = 1;
// create the display window
_nw = New Window( "Binary Image",
Outline Box( "Binary Image",
// create a slider controller to rescale the image
// this works by recreated the image, applying the scale factor,
// deleting the image in the display and redrawing the new image
V List Box(
H List Box(
Text Box( "Move Slider to Scale Image " ),
Slider Box(
.5,
1,
scalefactor,
img = New Image( "rgb", {r, r, r} );
img << Scale( scalefactor );
_picb << delete;
_panelb << Append( _picb = Picture Box( img ) )
;
)
),
// draw the binary image inside a panel box (just to give it an outline and a container)
_panelb = Panel Box( "Binary Image", _picb = Picture Box( img ) )
)
)
);The result looks like this

Here are a couple of ways to do this. The first one is a cell plot. To do this, one needs to correct your data table.
1. Delete row 1.
2. Select all columns
3. Using Standardize Attributes, change all columns from a Data Type of Character to a Data Type of Numeric.
4. Using Standardize Attributes, create a Column Property of Value Colors, and set the color of the value 0 to white, and the color of the value 1 to black
5. Run the Cell Plot Platform
Graph==>Cell Plot
Select all of the column and place them into the Y Response, and click on OK

The second example is to use the Graph Builder
1. Taking the above modified data table, a new column representing the row the data is in needs to be added. So, add a column called "Row" and set it's formula to
Row()
2. The data now needs to be stacked into basically one column of the zeros and ones. Using the
Tables==>Stack
platform, copy all of the columns, "Column 2" thru "Column 26" into the Stack Columns.
3. In the "Non-stacked columns" section, select the "Select" checkbox, and the choose the "Row" column.
3. Click on OK
4. In the new stacked data table, create a new column called "Column" and set the formula to
Num(Word(-1,:Label," "))
This will take the column number from the Label column, and make it a numeric value in the new colum
5. Open the Graph Builder Platform
Graph==>Graph Builder
6. Drag the Row column to the Y drop area
7. Drag the Column column to the X drop area
8. Right click on the graph and select
Smoother==>Remove
9. Drag the Data column to the Color drop area
10. Right click on the colored dot for the 0 in the legend and select
Color==>White
11. Right click on the colored dot for the 1 in the segend and select
Color==>Black
You will get this chart

Other methods are available too.