如何在 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}

在此輸入影像描述

相關內容