Есть хороший код, который позволяет вам делать это динамически в ответе на Как аннотировать несколько наборов данных в ListPlots .
Существует также команда LabelPlot
, определенная в Техническом примечании Маркировка кривых на графиках
Конечно, если у вас не так много изображений,
тогда нетрудно вручную добавить метки, используя Epilog
, например
fns[x_] := {5 + 2 x, 6 + x};
len := Length[fns[x]];
Plot[Evaluate[fns[x]], {x, 0, 10},
Epilog -> Table[Inset[
Framed[DisplayForm[fns[x][[i]]], RoundingRadius -> 5],
{5, fns[5][[i]]}, Background -> White], {i, len}]]
На самом деле, вы можете сделать что-то подобное с Locators
, что позволит вам перемещать метки куда угодно:
DynamicModule[{pos = Table[{1, fns[1][[i]]}, {i, len}]},
LocatorPane[Dynamic[pos], Plot[Evaluate[fns[x]], {x, 0, 10}],
Appearance -> Table[Framed[Text@TraditionalForm[fns[x][[i]]],
RoundingRadius -> 5, Background -> White], {i, len}]]]
В приведенном выше примере я сделал так, чтобы локаторы принимали форму меток, хотя также возможно сохранить Epilog
, как указано выше, и иметь невидимые локаторы, которые контролируют позиции.
Локаторы также могут быть ограничены (используя 2-й аргумент Dynamic
) соответствующими кривыми ... но это не обязательно.
В качестве примера приведенного выше кода с функциями, метки которых перемещаются вручную:
fns[x_] := {Log[x], Exp[x], Sin[x], Cos[x]};