填充参数曲线和 x 轴之间的区域

填充参数曲线和 x 轴之间的区域

我感觉答案是显而易见的,但我却未能找到答案。

我有一条参数曲线,我想表示一个积分X=1 至X=2. 以下是我的 MWE:

\documentclass [border = 5mm] {standalone}
\usepackage{pgfplots}
\begin{document}
    \begin{tikzpicture}
        \begin{axis} [
            axis lines = middle,
            xlabel = {$x$},
            ylabel = {$y$},
            xmin = -1, xmax = 3,
            ymin = -1, ymax = 1,
            grid = both,
            ]
            \addplot [domain = 0:1.2, samples = 50] ({3 * \x * \x - \x}, {sin (\x / pi * 180});
            \clip plot [domain = 0:1.2, samples = 50] ({3 * \x * \x - \x}, {sin (\x / pi * 180});
            \draw [fill = blue!20] (axis cs:1, 0) rectangle (axis cs:2, 1);
        \end{axis}
    \end{tikzpicture}
\end{document}

正如您所看到的,我有一个简单的想法,即剪切曲线,然后绘制一个矩形,但这并不奏效(我认为这表明我还有很多工作要做才能提高对 PGFPlots 的理解!)

如能提供任何有关填写所需区域的帮助,我们将不胜感激。

答案1

欢迎来到 TeX StackExchange!

\clip plot你的想法很接近了! PGFPlots 有一个库叫做,而不是使用,fill between在这种情况下,它是你的好朋友。你可以用它来填充任意两个图之间的颜色,它有自己的裁剪选项,soft clip可以让你限制填充的范围。

一条曲线从原点移动到象限 II,然后移动到象限 I。x = 1 和 x = 2 之间的积分区域用蓝色填充。

\documentclass [border = 5mm] {standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepgfplotslibrary{fillbetween}

\begin{document}
    \begin{tikzpicture}
        \begin{axis} [
            axis lines = middle,
            xlabel = {$x$},
            ylabel = {$y$},
            xmin = -1, xmax = 3,
            ymin = -1, ymax = 1,
            grid = both,
        ]
        \addplot[name path = curve,domain = 0:1.2, samples = 50] ({3 * \x^2 - \x}, {sin (\x / pi * 180});
        \path[name path = horizontalAxis] (axis cs: 3,0) -- (axis cs:-1,0);
        \addplot[fill = blue!20] fill between [of=horizontalAxis and curve,soft clip = {domain=1:2}];
        \end{axis}
    \end{tikzpicture}
\end{document}

为了方便您以后参考,值得注意的是,我根据您特定的参数方程定制了下面的代码。该fill between库尝试连接每个命名路径的第一个点和最后一个点,但这意味着水平轴路径需要从高到低(3 到 -1)才能工作。此外,由于曲线的参数化方式,此代码仅适用于严格正域。(如果您好奇,请尝试将域的下限设置soft clip为零时会发生什么,而不是任何值轻微地高于零。)因此,如果您打算通过重复使用相同的代码来制作其他图表,您可能会遇到奇怪的行为。

相关内容