尝试使用 pgfplots 绘制曲线下的面积

尝试使用 pgfplots 绘制曲线下的面积

通过扫描此处的问答,我了解到我需要添加库之间的填充。但是,它旨在填充曲线之间,而我想填充曲线和轴之间以指示积分。我尝试定义一个新的命名路径(floor)作为 -0.5 和 +0.5 之间的 x 轴。这是我的代码:

\documentclass{amsbook}
%
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepgfplotslibrary{fillbetween}
%
\begin{document}

\begin{tikzpicture}
    \begin{axis}
        \addplot[name path = parab, domain =-1:1,] {x^2};
        \addplot[name path = floor, draw=none] coordinates {(-0.5,0) (0.5,0)};
        \addplot[color=gray] fill between[of = parab and floor];
    \end{axis}
\end{tikzpicture}
\end{document}

输出如下:

在此处输入图片描述

并非完全出乎意料,但不是我想要的。仅供参考,我尝试定义两条新路径 - 垂直线在 -0.5(左)和 +0.5(右),并在 [parab 和 floor 以及左和右] 之间填充,但 pgfplots 不喜欢这样。我的方法错了,还是我在使用填充时错过了一个技巧?

答案1

我不确定我是否理解正确,但至少让我尝试解释一些我认为可能有助于您解决问题的事情。

首先,您绘制一条抛物线,domain = -1:1这意味着它从 x = -1 到 x = 1。该fill between机制将输出两条路径之间的区域并尊重这些路径的端点。因此,如果您想要一个覆盖抛物线从 x = -1 到 x = 1 之间的空间的区域,您需要创建一条也从 x = -1 到 x = 1 的线。如果您只想遮蔽该区域的一部分,您可以使用该soft clip选项并指定要遮蔽的域。

其次,默认情况下,绘图被方框轴包围。实际绘图和轴周围有填充。如果您不想要这样,则需要指定xminxmaxyminymax。然后,您可以向下移动用于效果的路径fill between,使其与下方方框轴的位置相匹配。

比较下面三个图的输出:

\documentclass[border=10pt]{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepgfplotslibrary{fillbetween}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[ymin = -0.1, ymax = 1.1]
        \addplot[name path = parab, domain = -1:1] {x^2};
        \addplot[name path = floor, draw = none] coordinates {(-1,-0.1) (1,-0.1)};
        \addplot[color=gray] fill between[of = parab and floor];
    \end{axis}
\end{tikzpicture}

\begin{tikzpicture}
    \begin{axis}[ymin = -0.1, ymax = 1.1]
        \addplot[name path = parab, domain = -1:1] {x^2};
        \addplot[name path = floor, draw = none] coordinates {(-1,-0.1) (1,-0.1)};
        \addplot[color=gray] fill between[of = parab and floor, soft clip = {domain = -0.5:0.5}];
    \end{axis}
\end{tikzpicture}

\begin{tikzpicture}
    \begin{axis}
        \addplot[name path = parab, domain = -1:1] {x^2};
        \addplot[name path = floor, draw = none] coordinates {(-1,0) (1,0)};
        \addplot[color=gray] fill between[of = parab and floor, soft clip={domain = -0.5:0.5}];
    \end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

相关内容