Как пометить разные кривые в Mathematica?

Как я могу пометить каждую из этих строк отдельно:

Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}]

3 ответа

Решение

Есть некоторый хороший код, который позволяет вам сделать это динамически в ответ на Как аннотировать несколько наборов данных в 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}]]

outputa

На самом деле, вы можете сделать что-то подобное с 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]};

четыре функции

Mathematica 9 теперь предоставляет простые способы включения легенд.

Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}, PlotLegends -> "Expressions"]

Вы можете вставить легенды в свой сюжет, загрузив PlotLegends пакет

<<PlotLegends`;
Plot[{5+2 x,6+x},{x,0,10},
    PlotLegend->{"5+2x","6+x"},LegendShadow->None,
    LegendPosition->{0.3,-0.5},LegendSpacing->-0,LegendSize->0.5]


Тем не менее, позвольте мне также отметить мою неприязнь к этому пакету, в первую очередь потому, что он крайне нелогичен, перегружен слишком большим количеством опций и не обеспечивает чистого опыта прямо из коробки, как большинство функций Mathematica. У вас будет немного повозиться с вариантами, чтобы получить то, что вы хотите. Однако на графиках и диаграммах, где вам нужна легенда, это может быть удобно. Также см. Комментарии к этому ответу и этому вопросу.

Другие вопросы по тегам