/ / Plotlegend in Mathematica funktioniert nicht für eine Funktionstabelle - wolfram-mathematica, plot

Plotegend in Mathematica funktioniert nicht für eine Tabelle von Funktionen - Wolfram-Mathematica, Plot

Ich versuche, mit PlotLegend in Mathematica v8 eine Liste von Funktionen mit einer Legende zu zeichnen. Als einfacher Test, der zeigt, was ich zu tun versuche.

<<PlotLegends`
test = Table[f[x], {f, {Sin, Cos, Tan, Log, Exp}}]
Plot[test, {x, 0, 1}, PlotRange -> Full, Axes -> {True, False},
PlotStyle -> Thick, AxesOrigin -> {0, 0},
PlotLegend -> {"Sin", "Cos", "Tan", "Log", "Exp"},
LegendPosition -> {0, -0.5}, LegendShadow -> None]

Gibt als Ausgabe

{Sin[x], Cos[x], Tan[x], Log[x], E^x}

Falsche Legende

Wenn ich die Tabelle jedoch explizit in den Plot-Befehl einfüge, erhalte ich die richtige Legende.

Plot[{Sin[x], Cos[x], Tan[x], Log[x], Exp[x]}, {x, 0, 1},
PlotRange -> Full, Axes -> {True, False}, PlotStyle -> Thick,
AxesOrigin -> {0, 0},
PlotLegend -> {"Sin", "Cos", "Tan", "Log", "Exp"},
LegendPosition -> {0, -0.5}, LegendShadow -> None]

Legende korrigieren

Für meine eigentliche Anwendung füge ich eine Liste von Funktionen in einer Do - Schleife zusammen, so dass der letztgenannte Plot - Befehl nicht ideal ist.

Irgendwelche Vorschläge würden sehr geschätzt werden.

Prost, Mike

Antworten:

5 für die Antwort № 1

Ersetzen Plot[test, ...] mit Plot[Evaluate@test, ...].

Das Problem ist, dass Plot das erste Argument nicht bewertet und nur bei der Berechnung von Punkten auswertet. Daher wird beim Bestimmen der Beschriftungen nur ein einziges Argument angezeigt test, keine Liste und gibt daher nur ein Etikett aus. Evaluate@test Weist Mathematica an, auszuwerten test bevor Sie es weitergeben Plot obwohl Plot ist so definiert, dass das Argument nicht bewertet wird. Auf diese Weise sieht Plot die Liste, in der Sie gespeichert haben test und kann mehrere Labels erzeugen.