Comment étiqueter différentes courbes dans Mathematica?

comment étiqueter chacune de ces lignes séparément:

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

enter image description here

20
demandé sur 500 2011-08-28 17:39:43

3 réponses

il y a un code sympa qui vous permet de le faire dynamiquement dans une réponse à comment annoter plusieurs ensembles de données dans ListPlots .

il y a aussi une commande LabelPlot définie dans la Note technique courbes D'étiquetage dans les tracés

bien sûr, si vous n'avez pas trop d'images à faire, alors il n'est pas difficile d'ajouter manuellement les étiquettes en utilisant Epilog , par exemple

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

En fait, vous pouvez faire quelque chose de similaire avec Locators qui permet de déplacer les étiquettes où vous voulez:

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}]]]

dans ce qui précède j'ai fait les locators prendre la forme des étiquettes, bien qu'il soit également possible de garder un Epilog comme cela ci-dessus et avoir des locators invisibles qui contrôlent les positions. Localisateur pourrait également être contraint (en utilisant le deuxième argument de Dynamic ) aux courbes appropriées... mais ce n'est pas vraiment nécessaire.

comme exemple du code ci-dessus avec les fonctions avec les étiquettes déplacées à la main:

fns[x_] := {Log[x], Exp[x], Sin[x], Cos[x]};

four functions

34
répondu Simon 2017-05-23 12:09:40

Mathematica 9 fournit maintenant des moyens faciles d'inclure des légendes.

Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}, PlotLegends -> "Expressions"]
10
répondu Shane C 2012-12-24 03:51:49

vous pouvez insérer des légendes dans votre parcelle en chargeant le paquet PlotLegends 151930920"

<<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


cependant, permettez-moi également de noter mon aversion de ce paquet, principalement parce qu'il est extrêmement contre-intuitif, chargé avec trop d'options et ne fournit pas une expérience propre directement hors de la boîte comme la plupart des fonctions de Mathematica. Vous aurez quelques bricolages autour de faire avec les options pour obtenir ce que vous voulez. Cependant, dans les graphiques et les graphiques où vous voulez une légende, cela peut être pratique. Voir aussi les commentaires de cette réponse et cette question .

6
répondu abcd 2017-05-23 12:25:51