Ich möchte eine Bézierkurve mit Kontrollpunkten erstellen. Im pgfplots-Handbuch kann ich nicht finden, was ich will. Ich hoffe, jemand kann mir helfen.
Ich möchte eine Kurve erstellen, indem ich stückweise Stücke verbinde, die mit Bézierkurven und Kontrollpunkten definiert sind. Damit möchte ich Diagramme für Mathematikstudenten erstellen, denen ich das Diagramm einer Funktion gebe und sie ein Diagramm der Ableitung erstellen müssen. Ich möchte also in der Lage sein, Wendepunkte, Extrema usw. genau zu steuern.
Hier ist ein Beispiel, aber ich habe keine Ahnung, was los ist oder warum die Punkte in der Reihenfolge verbunden wurden, in der sie verbunden wurden.
\documentclass[border=6pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{patchplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[nodes near coords={(\coordindex)},
title={\texttt{patch type=cubic spline}}]
\addplot[
mark=*,
patch,
patch type=cubic spline]
coordinates {
(2,2) [0]
(0,2) [0]
(2,0) [0]
(0,0) [1]
};
\end{axis}
\end{tikzpicture}
\end{document}
Ich habe das Gelesene so verstanden, dass die Tags dabei helfen würden, Kontrollpunkte zu definieren. Ich erwartete, dass diese Kurve ungefähr wie eine Form [0]
aussehen würde, die dort beginnt und dort endet , wo sich Kontrollpunkte befinden.S
(2,2)
(0,0)
(0,2)
(2,0)
Ich dachte, ich könnte dies mit etwas wie diesem erreichen:
\documentclass[border=6pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{patchplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[nodes near coords={(\coordindex)},
title={\texttt{patch type=cubic spline}}
]
\draw (axis cs:2,2) .. controls (axis cs:0,2) and (axis cs:2,0) .. (axis cs:0,0);
\end{axis}
\end{tikzpicture}
\end{document}
Aber pgfplots scheint meinen Pfad für seinen Begrenzungsrahmen zu ignorieren.
Antwort1
Die Funktion patch type=cubic spline
erwartetStützpunkte, also Punkte, die auf der Kurve liegen. Es wählt den eindeutigen kubischen Spline, der durch die vier Punkte verläuft (= interpoliert).
\draw ... controls <A> and <B> ..
ist der TikZ-Befehl für Bézier-Zeichenoperationen und tut, was Sie erwarten.
In pgfplots tragen nur Koordinaten innerhalb einer \addplot ...;
Achsenbegrenzung zu den Achsenbegrenzungen bei.
Es klingt, als hätten Sie zwei Möglichkeiten:
- eine Interpolationsbasis zusammen mit
pgfplots
oder zu verwenden - auf eine reine Tikz-Lösung zu setzen
\draw .. controls ..
(die übrigens verkettet werden kann).
Lösung 2. kann innerhalb einer pgfplots-Achse gezeichnet werden; in diesem Fall müssen die Achsengrenzen mit xmin=-1,xmax=3,ymin=-1,ymax=3
oder so ähnlich angegeben werden:
\documentclass[border=6pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{patchplots}
% 1.11 does not need "axis cs:", i.e. (axis cs:2,2) is equivalent to (2,2)
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
title={\texttt{patch type=cubic spline}},
xmin=-1,xmax=3,ymin=-1,ymax=3,
]
\draw (2,2) .. controls (0,2) and (2,0) .. (0,0);
\node at (2,2) {$0$};
\node at (0,2) {$1$};
\node at (2,0) {$2$};
\node at (0,0) {$3$};
\end{axis}
\end{tikzpicture}
\end{document}