如何在 pgfplots 中用控制点制作贝塞尔曲线

如何在 pgfplots 中用控制点制作贝塞尔曲线

我想创建一条带控制点的贝塞尔曲线。我在 pgfplots 手册中找不到我想要的内容。我希望有人能帮助我。

我想做的是通过连接使用贝塞尔曲线和控制点定义的分段来创建一条曲线。这是为微积分学生创建图表,我给他们一个函数的图表,他们必须创建一个导数的图表。所以,我希望能够精确控制拐点、极值等的位置……

这是一个例子,但我不知道发生了什么,也不知道为什么这些点按照它们的连接顺序连接起来。

\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}

我理解我所读到的内容,标签[0]将有助于定义控制点。我期望这条曲线看起来有点像一个S形状,起始点(2,2)和结束点(0,0)(0,2)控制(2,0)点。

我认为我可以通过以下方式实现这一点:

\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}

但是 pgfplots 似乎忽略了我的边界框的路径。

答案1

功能patch type=cubic spline预期插值点,即曲线上的点。它选择通过(= 插值)四个点的唯一三次样条线。

\draw ... controls <A> and <B> ..是用于贝塞尔绘图操作的 TikZ 指令,它执行您期望的操作。

在 pgfplots 中,只有内部的坐标才对\addplot ...;轴限制有贡献。

听起来好像你有两个选择:

  1. 使用插值基础以及pgfplots
  2. 依靠纯 tikz 解决方案\draw .. controls ..(顺便说一下,可以连接)。

解决方案 2. 可以在 pgfplots 轴内绘制;在这种情况下,需要使用xmin=-1,xmax=3,ymin=-1,ymax=3或类似方法给出轴限制:

\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}

在此处输入图片描述

相关内容