I would like to create a Bezier curve with control points. I'm having no success finding what I want in the pgfplots manual. I was hoping someone could help me.
What I would like to do is create a curve by joining piecewise pieces defined using Bezier curves and control points. This is to create graphs for calculus students where I give them the graph of a function and they have to create a graph of the derivative. So, I would like to be able to precisely control where inflection points, extrema, etc….
Here's an example, but I have no clue what's going on or why the points have been connected in the order that they've been connected in.
\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}
My understanding of what I read was that the tags [0]
would help define control points. I expected this curve to look something like an S
shape starting at (2,2)
and ending at (0,0)
where (0,2)
and (2,0)
were control points.
I thought I could accomplish this with something like:
\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}
But pgfplots seems to ignore my path for its bounding box.
Best Answer
The feature
patch type=cubic spline
expects interpolation points, i.e. points which are on the curve. It chooses the unique cubic spline which passes through (= interpolates) the four points.\draw ... controls <A> and <B> ..
is the TikZ instruction for bezier drawing operations and does what you expect it to do.In pgfplots, only coordinates inside of an
\addplot ...;
contribute to axis limits.It sounds as if you two choices:
pgfplots
or\draw .. controls ..
(which can be concatenated, by the way).Solution 2. can be drawn inside of a pgfplots axis; in this case, axis limits need to be given using
xmin=-1,xmax=3,ymin=-1,ymax=3
or something like that: