Jak oznakować różne krzywe w Mathematica?

Jak mogę oznaczyć każdą z tych linii osobno:

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

Tutaj wpisz opis obrazka

Author: 500, 2011-08-28

3 answers

Jest jakiś ładny kod, który pozwala to zrobić dynamicznie w odpowiedź do Jak adnotować wiele zestawów danych w ListPlots .

Istnieje również polecenie LabelPlot zdefiniowane w uwadze technicznej znakowanie krzywych w wykresach

Oczywiście, jeśli nie masz zbyt wielu obrazów do zrobienia, wtedy nie jest trudno ręcznie dodać etykiety w using Epilog, na przykład

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

W rzeczywistości, można zrobić coś podobnego z Locators który pozwala na przenoszenie etykiet w dowolne miejsce:

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

W powyższym zrobiłem lokalizatory w formie etykiet, chociaż możliwe jest również utrzymanie Epilog Jak powyżej i mieć niewidoczne lokalizatory, które kontrolują pozycje. Lokalizatory mogą być również ograniczone (używając drugiego argumentu Dynamic) do odpowiednich krzywych... ale to nie jest konieczne.

Jako przykład powyższego kodu Z FUNKCJAMI z etykietami przesuwanymi przez ręka:

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

cztery funkcje

 34
Author: Simon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:09:40

Mathematica 9 zapewnia teraz łatwe sposoby dołączania Legend.

Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}, PlotLegends -> "Expressions"]
 10
Author: Shane C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-24 03:51:49

Możesz wstawić legendy do wykresu ładując PlotLegends pakiet

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

Tutaj wpisz opis obrazka


Pozwolę sobie jednak zwrócić uwagę na moją niechęć do tego pakietu, przede wszystkim dlatego, że jest niezwykle nieprzewidywalny, obciążony zbyt wieloma opcjami i nie zapewnia czystego doświadczenia od razu po wyjęciu z pudełka, jak większość funkcji Mathematica. Będziesz musiał trochę bawić się z opcjami, aby uzyskać to, czego chcesz. Jednak na wykresach i wykresach, gdzie chcesz legendę, może to być poręczne. Zobacz także komentarze do tej odpowiedzi i tego pytania .

 6
Author: abcd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:51