ClearAll[g]
g[t_] = 1 - 1/(Exp[990/t] - 1);
mesh = {2/3, 1/3, 0};
meshlabels = {"g2", "g1", "g0"};
1. DisplayFunction + MeshFunctions + Mesh
Use a custom DisplayFunction
to add labels and drop lines to mesh points specified using the options MeshFunctions
and Mesh
:
displayFunction = ReplaceAll[
p : {__Point} :>
{p, MapThread[{Text[#, #2, {0, -2}],
Dashed, Line[{#2, {1, 0} #2}]} &]@{meshlabels, p[[All, 1]]}}]@*
Normal;
Plot[g[t], {t, 0, 1500},
MeshFunctions -> {#2 &},
Mesh -> {mesh},
MeshStyle -> Directive[Red, PointSize @ Large],
DisplayFunction -> displayFunction]

2. PlotHighlighting
In versions 13.3+, you can also use the option PlotHighlighting
to specify the points to be highlighted, their labels and drop lines:
highlights = MapApply[Placed[
{{"XYLabel", <|LeaderSize -> {10, 90 Degree},
LabelingFunction -> (#), Appearance -> "Framed", Background -> White|>},
"YNearestPoint",
{"XDropline", <|"Style" -> Directive[Thick, Dashed, Red]|>}}, {#2}] &]@
Transpose[{Function /@ meshlabels, mesh}];
Plot[g[t], {t, 0, 1500}, PlotHighlighting -> highlights]

3. ListPlot + Filling + Show
pts = Quiet@Transpose[{InverseFunction[g] /@ mesh, mesh}];
Show[Plot[g[t], {t, 0, 1500}],
ListPlot[Thread[Callout[pts, meshlabels, Above]],
Filling -> Axis,
PlotStyle -> Directive[Red, PointSize@Large],
FillingStyle -> Directive[ Thick, Dashed]]]

g1=g0/3
would be zero sinceg0
is at zero so improve the explanation further, if required. Thanks. $\endgroup$Epilog
option to yourPlot
command where you can specify as many lines as needed usingLine
. $\endgroup$