Ответ 1
Там есть хороший код, который позволяет вам динамически делать это в ответе на Как комментировать несколько наборов данных в 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[[email protected][fns[x][[i]]],
RoundingRadius -> 5, Background -> White], {i, len}]]]
В приведенном выше примере я сделал локаторы в форме меток, хотя также возможно сохранить Epilog
, как указано выше, и иметь невидимые локаторы, которые управляют позициями.
Локаторы также могут быть ограничены (используя 2-й аргумент Dynamic
) для соответствующих кривых... но это не обязательно.
В качестве примера приведенного выше кода с функциями с метками, перемещаемыми вручную:
fns[x_] := {Log[x], Exp[x], Sin[x], Cos[x]};