There are a couple of ways to do what you want. You can use Annotation or you can use a Graphic Script.
With Annotation, you specify the Text and the location of the Text Box. In the JSL below, I added the Annotation within the definition of the Graph Builder JSL. As can be seen, the Text Box location is determined by what I remember as being the pixel location within the frame box.
Add Graphics Script usage, uses the actual X and Y axis values for it's location. However, this is not real straight forward with your graph. Since both axes are not Continuous columns, but rather are Ordinal and Nominal, JMP assigns integer values to each of the levels found in the data, starting with 0. Therefore since there are 6 levels of Age, the X axis goes from 0 to 5. Therefore, when referencing the X value in the Text() function, it needs to be within the range of -.5 to 5.5 to be visible. Similarly, the Y axis value needs to be within -.5 to 1.5. If a column used in the graph is Continuous, the actual values of the data are used in the X,Y location specification. For this example, I used a << Add Graphics Script() as an after Platform Execution to add the graphic to the Frame Box(). See below.
gb = Graph Builder(
Show Control Panel( 0 ),
Variables( X( :age ), Y( :sex ) ),
Elements( Heatmap( X, Y, Legend( 2 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Text Annotation(
Text( "Using Annotation" ),
Fixed Size( 0 ),
Text Box( {169, 137, 224, 200} ),
Font( "Segoe UI", 14, "Bold" ),
Filled( 0 )
), Add Text Annotation(
Text( "" ),
Fixed Size( 0 ),
Text Box( {269, 171, 286, 179} ),
Filled( 0 )
)}
)
)
);
Report( gb )[framebox( 1 )] << add graphics script(
Text Font( "Arial", 14, "Bold" );
Text( Center Justified, {1.5, .90}, "Using Add Graphics" );
);
Jim