Jak mogę oznaczyć każdy z tych linii oddzielnie:Jak etykietować różne krzywe w Mathematica?
Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}]
Jak mogę oznaczyć każdy z tych linii oddzielnie:Jak etykietować różne krzywe w Mathematica?
Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}]
Jest jakiś ładny kod, który pozwala, aby to zrobić dynamicznie an answer do How to annotate multiple datasets in ListPlots.
Jest też LabelPlot
polecenie zdefiniowane w uwadze technicznej Labeling Curves in Plots
Oczywiście, jeśli nie masz zbyt wiele obrazów sprawiają, to nie jest trudne, aby ręcznie dodać etykiety w użyciu 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}]]
W rzeczywistości, można zrobić coś podobnego z Locators
który pozwala przenieść th Etykiety e tam, gdzie chcesz:
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}]]]
w powyższym zrobiłem lokalizatory przybrać formę etykiety, chociaż możliwe jest również, aby mieć Epilog
takiego powyżej mają niewidzialne lokalizatory które kontrolują pozycje. Lokalizatory mogą być również ograniczone (używając drugiego argumentu z Dynamic
) do odpowiednich krzywych ... ale to naprawdę nie jest konieczne.
Jako przykład powyższego kodu z funkcji z etykietami przenoszone ręcznie:
fns[x_] := {Log[x], Exp[x], Sin[x], Cos[x]};
+1 Nicea pomysł, aby użyć 'Locators'! –
+1. Może nie być * konieczne *, aby ograniczać lokalizatory do linii, ale jest to całkiem fajne. Spróbuj zmienić wyrażenie 'Dynamiczny' na' Dynamiczny [pos, (pos = MapIndexed [{##} /. {{X_, y_}, {i _}}:> {x, fns [x] [[i]]} &, #]) &] '. – WReach
@WReach: Jesteś typem zainteresowanego czytelnika, dla którego opuściłem to ćwiczenie! Twój kod działa dobrze. – Simon
Można wstawić legendy w swojej działce ładując 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]
PlotLegends
Jednakże, pozwólcie mi również zauważyć moją niechęć do tego pakietu, przede wszystkim dlatego, że jest bardzo nieintuicyjny, obarczony zbyt wieloma opcjami i nie zapewnia czystego doświadczenia zaraz po wyjęciu z pudełka, jak większość funkcji Mathematica. Będziesz miał trochę do zrobienia z opcjami, aby uzyskać to, co chcesz. Jednak na wykresach i wykresach, w których chcesz legendy, może się to przydać. Zobacz także komentarze do this answer i this question.
Pakiet PlotLegends nie jest optymalny. Zobacz [komentarze do tej odpowiedzi] (http://stackoverflow.com/questions/6988983/how-to-annotate-multiple-datasets-in-listplots/6989679#6989679) i [to pytanie SO] (http: // stackoverflow.com/q/3463437/421225). – Simon
@Simon: Wiem ... Miałem drugą część mojej odpowiedzi, którą usunąłem przed oknem 5 min, ponieważ nie chciałem przekazywać żadnych ocen. Oto, co powiedział: _ " Jednakże, pozwólcie mi również zauważyć moją niechęć do tego pakietu, przede wszystkim dlatego, że jest bardzo sprzeczny z intuicją, obarczony zbyt wieloma opcjami i nie zapewnia czystego doświadczenia zaraz po wyjęciu z pudełka, jak większość funkcji Mathematica. Będziesz miał trochę do zrobienia z opcjami, aby uzyskać to, czego chcesz. Jednak na wykresach i wykresach, w których chcesz legendy, może się to przydać. "_ – abcd
Po przeczytaniu tego usunę tę odpowiedź odpowiedź. Jednak dodaj te dwa linki powyżej jako komentarz do pytania (zauważając również, że jest błędny). Być może wszystko, czego chce, to legenda, a ludzie mają sposoby na komplikowanie żądań. – abcd
Mathematica 9 oferuje teraz proste sposoby dołączania legend.
Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}, PlotLegends -> "Expressions"]
możliwe duplikat [? Możliwe umieścić wyrażenie równanie w pobliżu jego graficznej reprezentacji] (http://stackoverflow.com/q/1740305/211232) – WReach