# How do I label critical points on the plot of a curve?

I want to label the local maxima, local minima, and points of inflection on a plot of a curve. How is this done in Mathematica?

• Have you tried anything? Do you have an example function? – J. M.'s ennui Oct 10 '18 at 4:12

One way to produce such labeling as you ask for is to use Callout. However, Callout only works in plots and not in graphic directives. This complicates things a little because Epilog can't be used to show the points. I resort to plotting the curve on one plot and the critical points and their labels on another and then combining the two with Show.

Here is an example using a cubic polynomial as the curve.

f[x_] := x (x - 1) (x + 1)

pts = {#, f[#]} & /@ {-(1/Sqrt[3]), 0, 1/Sqrt[3]} // N;
lbls = {"max", "inflection", "min"};
places = {Automatic, Automatic, {.63, -.43}};


pts are the critical points
lbls are their labels
places are where they will be placed. Note that I only override Mathematica's automatic placement for the minimum. I was OK with the placement of the other two points. BTW, the point {.63, -.43} will be the position of the kink in the leader line of the minimum's callout.

With[{max = 1},
curve = Plot[f[x], {x, -max, max}];
points =
ListPlot[MapThread[Callout[#1, #2, #3] &, {pts, lbls, places}],
PlotRange -> {{-max, max}, Automatic},
PlotStyle -> {Red, AbsolutePointSize[8]}]];

Show[curve, points, PlotRange -> All]


• I upvoted for going beyond what the OP provided. – J. M.'s ennui Oct 10 '18 at 7:06
• @J.M.issomewhatokay. I had to because the OP essentially provided nothing. :-) – m_goldberg Oct 10 '18 at 14:36