You could use a lineup box to hold a contour plot for each die, something like this
The gray rectangles are beyond the edge of the wafer.
waferRadius = 1; // arbitrary
across = 7;
width = 2 * waferRadius / across;
down = 16;
height = 2 * waferRadius / down;
lub = Lineup Box( N Col( across ), <<backgroundcolor( RGB Color( 0.3, 0.3, 0.3 ) ) );// dark gray
For( row = 0.5, row <= down, row += 1,
For( col = 0.5, col <= across, col += 1,
If( Sqrt( (row * height - waferRadius) ^ 2 + (col * width - waferRadius) ^ 2 ) < waferRadius,
// on the wafer. at this point you need the data for
// a contour plot. It should be a subset from a table
// for the wafer's die, most likely, but this is a demo.
contourDt = New Table( "Untitled",
invisible,
Add Rows( 50 ),
New Column( "x", Formula( Mod( Row()-1, 5 ) ) ), // data range 0..4
New Column( "y", Formula( Floor( (Row()-1) / 5 ) ) ), // range 0..9
New Column( "z", Formula(y+x^atan(row-down/2,col-across/2) ) ) // demo
);
gb = contourDt << Graph Builder(
Size( 10*down, 10*across ), // 10: scale it up to minimize the borders
fittowindow( "off" ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Show Title( 0 ),
Show Footer( 0 ),
Show X Axis( 0 ),
Show Y Axis( 0 ),
Show X Axis Title( 0 ),
Show Y Axis Title( 0 ),
Variables( X( :x ), Y( :y ), Overlay( :z ) ),
Elements( Contour( X, Y, Legend( 37 ) ) ),
SendToReport(
Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "" ), Image Export Display( Normal )} ),
// choose the axis range to exactly display all the data, no more, no less
Dispatch( {}, "x", ScaleBox, {Min( 0 ), Max( 4 ), Inc( 1 ), Minor Ticks( 0 )} ),
Dispatch( {}, "y", ScaleBox, {Min( 0 ), Max( 9 ), Inc( 2 ), Minor Ticks( 0 )} )
)
);
Report( gb ) << backgroundcolor( RGB Color( 0.3, 0.3, 0.3 ) );// dark gray
lub << append( Report( gb )[framebox( 1 )] << getpicture );
gb << closewindow;
Close( contourDt, nosave );
,
// off the edge
lub << append( Spacer Box() )
)
)
);
img = lub<<getpicture;
img<<scale(.3); // .3: scale it down to fit the screen
New Window( "contours on wafer", img );
I took a picture of each contour plot, moderately large, both to be able to close the platform and delete the dummy data and to minimize the appearance of some pixels around the edge of the picture. Later, I scale the big composite picture down. The LineupBox is never displayed (you could, for debugging), but the picture of the lineup is displayed at the end.
I have not thought through the legend and how to make it common across the graphs. I think it is possible to specify the legend ranges.
You can use img<<savepicture to capture the image, or you might want to add some more displayboxes with information about the wafer before capturing the picture.
It does take a couple of minutes to run the example.
Craige