Inspiriert durch この質問 bei ask.sagemath, was ist die am besten Hinzufügen von Pfeilen an das Ende von Kurven, die durch Plot
, ContourPlot
usw...? Dies sind die Arten von Diagrammen, die man in der Schule sieht und die zeigen, dass die Kurve am Ende der Seite weitergeht.
Nach einigem Suchen konnte ich keine eingebaute Möglichkeit oder ein aktuelles Paket finden, um dies zu tun. (Es gibt PfeilErweitert aber es ist ziemlich alt).
Die in der ask.sagemath-Frage angegebene Lösung beruht auf der Kenntnis der Funktion und ihrer Endpunkte und (vielleicht) der Fähigkeit, Ableitungen zu berechnen. Die Übersetzung in Mathematica lautet
f[x_] := Cos[12 x^2]; xmin = -1; xmax = 1; small = .01;
Plot[f[x],{x,xmin,xmax}, PlotLabel -> y==f[x], AxesLabel->{x,y},
Epilog->{Blue,
Arrow[{{xmin,f[xmin]},{xmin-small,f[xmin-small]}}],
Arrow[{{xmax,f[xmax]},{xmax+small,f[xmax+small]}}]
}]
Eine alternative Methode besteht darin, einfach die Line[]
Objekte, die von Plot[]
con Arrow[]
. Zum Beispiel
Plot[{x^2, Sin[10 x], UnitStep[x]}, {x, -1, 1},
PlotStyle -> {Red, Green, {Thick, Blue}},
(*AxesStyle -> Arrowheads[.03],*) PlotRange -> All] /.
Line[x__] :> Sequence[Arrowheads[{-.04, .04}], Arrow[x]]
Dies hat jedoch das Problem, dass jegliche Unstetigkeiten in den Linien Pfeilspitzen erzeugen, wo man sie nicht haben will (dies kann oft durch die Option Exclusions -> None
). Noch wichtiger ist, dass dieser Ansatz hoffnungslos ist bei CountourPlot
s. Versuchen Sie z.B.
ContourPlot[x^2 + y^3 == 1, {x, -2, 2}, {y, -2, 1}] /.
Line[x__] :> Sequence[Arrowheads[{-.04, .04}], Arrow[x]]
(die Probleme im obigen Fall können durch die Regel behoben werden, z.B., {a___, l1_Line, l2_Line, b___} :> {a, Line[Join[l2[[1]], l1[[1]]]], b}
oder durch entsprechende Pfeile mit einer Spitze.).
Wie Sie sehen, ist keiner der obigen (schnellen) Hacks besonders robust oder flexibel. Kennt jemand einen Ansatz, der das ist?