MATLAB: Print curly braces in a plot

curly bracedrawplotspecial character

Hello everyone,
I am trying draw a curly brace to indicate a distance in a plot (with some accompanying text). The brace should be "stretchable", i.e. vary its length according to a beginning and end point.
This exact same question has been asked in the Newsreader but no answer was obtained.
Any suggestions?

Best Answer

There's nothing that ships with MATLAB that does exactly what you want. The 'doublearrow' annotation is probably the thing that comes the closest. It can be used to indicate a distance in a plot, but it's clearly not a brace.
If you're really committed to having a brace, I would just draw some kind of brace-like shape using the line command. The task then becomes generating x-data and y-data that define your brace. This can be as simple or as complicated as you like. Here's one idea:
% Here's the plot I'm annotating
plot(1:10)
% These define the placement and size of the brace
x = 6;
y1 = 0;
y2 = 6;
width = 0.2;
% Make some x-data and y-data
line_x = x + [0, 0.5, 0.5, 1, 0.5, 0.5, 0]*width;
line_y = y1 + [0, 0.02, 0.48, 0.5, 0.52, 0.98, 1]*(y2-y1);
% Draw the brace and some text, too, for fun.
line(line_x, line_y, 'Color', 'k')
text(x+1.5*width, y1 + 0.5*(y2-y1), 'Whoaaa! Look at this gap!');
You can see that's a relatively primitive brace. If I wanted to make it fancier, I might start looking at using Bézier curves.