Which JMP version are you using?
I assume shape idea comes from this how does one add letters form a connecting letters report to a graph . Other option is here How to denote letters to mark significant differences in a boxplot? . With the second option you can add use the column as markers and then display plot graph with max summary statistic
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
fit = dt << Oneway(Y(:height), X(:age), All Pairs(1), invisible);
letters_tb = ((Report(fit)[OutlineBox("Connecting Letters Report")]) << child) << child;
tb_letter_cols = Filter Each({col_name}, letters_tb << Get Names,
Starts With(col_name, "~Letter Column ")
);
aa_letters = Associative Array();
For Each({level, idx}, letters_tb[1] << get,
aa_letters[level] = "";
For Each({letter_col, idx_col}, tb_letter_cols,
aa_letters[level] ||= Try((letters_tb[1 + idx_col] << get)[idx], "");
);
);
fit << close window;
dt << New Column("TukeyLetters", Character, Nominal, UseForMarker(1), << Set Each Value(
aa_letters[char(:age)];
));
gb = dt << Graph Builder(
Size(529, 451),
Show Control Panel(0),
Variables(X(:age), Y(:height)),
Elements(
Box Plot(X, Y, Legend(6), Box Style("Solid"), Fences(0)),
Points(
X,
Y,
Legend(7),
Summary Statistic("Third Quartile"),
Error Interval("None")
)
)
);
Then there is the option of using graphic script (or maybe marker draw expression) where you calculate where the text should be. This is the most flexible and complicated option.
Edit: There is one more option. You can create new column which determines the Y-axis for the point plot, then use that as extra column in Y-axis, disable it from everything except from the point plot. In this example height+2 is used as the extra column
And the calculation is just :height + 2. It could be easily made much smarter with Col Max(:height, :age) * 1.01 or something
-Jarmo