Как пометить разные кривые в Mathematica? - PullRequest
20 голосов
/ 28 августа 2011

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

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

enter image description here

Ответы [ 3 ]

34 голосов
/ 28 августа 2011

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

four functions

10 голосов
/ 24 декабря 2012

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

Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}, PlotLegends -> "Expressions"]
6 голосов
/ 28 августа 2011

Вы можете вставить легенды в свой сюжет, загрузив пакет 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]

enter image description here


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

...