How to Go a Little Crazy with Graphics Titles
The title function is the third most commonly-used function in my 13 years of writing this blog, after imshow and imread. You have probably all used this function many times.
But I suspect that even the power users among you might not know half of what this function can do. So let me take you on a little tour.
Contents
- How to Title a Plot
- How to Make a Multiline Title
- How to Title a Legend
- How to Title a Tiled Set of Graphics
- How to Control the Title Font
- How to Put Symbols in the Title
- How to Put Superscripts and Subscripts in the Title
- How to Put Unicode Characters into the Title
- How to Put Math in the Title
- How to Go a Little Crazy with Titles
How to Title a Plot
Here's the basic form everyone knows:
A = imzoneplate;
w = A(255,:);
plot(w)
xlim([1 501])
title("Zone Plate Cross-Section")
How to Make a Multiline Title
But you can make a multiline title, too, using a string array.
plot(w) xlim([1 501]) title(["Zone Plate Cross-Section" ; "Row 255"])
How to Title a Legend
If you read the reference page for title, you'll see that it has this syntax:
The first argument, target, is described this way:
Hey, you can title a legend!
x = linspace(0,pi); y1 = cos(x); plot(x,y1) hold on y2 = cos(2*x); plot(x,y2) hold off lgd = legend("cos(x)","cos(2x)"); title(lgd,"The Best Title")
How to Title a Tiled Set of Graphics
The target argument can also be a tiledlayout object, which is a flexible and easy-to-use way to organize a grid of related graphics. (Note: tiledlayout is new in R2019b.)
tl = tiledlayout(2,2); [X,Y,Z] = peaks(20); % Tile 1 nexttile surf(X,Y,Z) % Tile 2 nexttile contour(X,Y,Z) % Tile 3 nexttile imagesc(Z) % Tile 4 nexttile plot3(X,Y,Z) title(tl,"Four Ways to Look at Peaks")
How to Control the Title Font
Using Name-Value pairs, you can control the font, font size, font weight, and color.
clf x = @(t) sin(2*t); y = @(t) sin(3*t); fplot(x,y,'LineWidth',2) title("Parametric Plot", ... "FontName", "Chalkduster", ... "FontSize", 24, ... "FontWeight", "bold", ... "Color", [0.850 0.325 0.098]);
Alternatively, you can call title with an output argument to capture the text object and then set its properties directly, like this:
ezpolar('1+cos(t)*sin(t)^2') t = title("Polar Plot"); t.FontName = "Marker Felt"; t.FontAngle = "italic"; t.FontSize = 36;
How to Put Symbols in the Title
By default, MATLAB will recognize TeX symbol names in your title text. These include Greek letters (\alpha, \zeta, \tau) and mathematical symbols (\approx, \leq, \nabla).
plot(graph(bucky)) axis equal title("These symbols are here for no good reason: \alpha, \zeta, \tau" + ... ", \approx, \leq, \nabla")
How to Put Superscripts and Subscripts in the Title
Use the TeX notation for superscripts and subscripts.
plot([-40 -40])
title("-40^{\circ} is a special temperature")
How to Put Unicode Characters into the Title
Some people don't like using a superscript "circle" symbol to show degrees and would prefer to use the Unicode degree character. You can get a Unicode character in MATLAB by calling char on the decimal code value. The decimal code value for the degree symbol is 176.
plot([-40 -40]) title("-40" + char(176) + " is a special temperature")
Yeah, that does look better, doesn't it?
How to Put Math in the Title
You can put a lot of simple mathematical expressions in the title using the symbols, subscripts, and superscripts of the TeX interpreter, but I think the LaTeX interpreter looks better for real math.
fsurf(@(u,v)sin(pi*u).*sin(pi*u).*cos(v), ... @(u,v)sin(pi*u).*sin(pi*u).*sin(v), ... @(u,v)u, [-1 1 0 2*pi]) title(["$x = \sin(\pi u) \sin(\pi u) \cos(v)$", ... "$y = \sin(\pi u) \sin(\pi u) \sin(v)$", ... "$z = u$"], ... "Interpreter","latex")
Here's a display-math version of one of my favorite equations, paired with an unrelated graphic.
fplot(@(x) x.^3, [-2 2], 'r', 'LineWidth',2) title("$$X(\omega) = \sum_{n=-\infty}^{\infty} x[n] e^{-j\omega n}$$",... "Interpreter","latex")
How to Go a Little Crazy with Titles
One of the things I like about the TeX interpreter option is that it lets you change your about about font, font size, font weight, and color. In the middle of the title. As many times as you like.
fplot(@(x) x.^3, [-2 2], 'r', 'LineWidth',2) title("Where \fontsize{24} Is \fontsize{8} the \fontsize{36} " + ... "\color[rgb]{0,0.5,0.5} Inflection \fontsize{18} \it point\color{red}???")
If only I were still in the business of writing journal papers. I would definitely try to sneak in something like that.
Finally, I should note that the title function can also be used to compute the singular value decomposition. But I will have to leave that story for later...
Comments
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.