pgfplots:填充下方的网格线

pgfplots:填充下方的网格线

我想填充两条曲线之间的区域,并在填充下方显示网格线。可以吗?

(从使用 PGFplot 在绘图填充上方显示网格?我认为axis on bottom可能会有效,但这似乎不是一个命令。)

编辑:填充方法是填充 pgfplots 计算的两条曲线之间的区域由 Christian Feuersanger 编写,需要最新版本的pgfplots

\documentclass{standalone}
\usepackage{tikz,pgfplots}

\pgfplotsset{compat=1.10}
\usepgfplotslibrary{fillbetween}

\begin{document}

\begin{tikzpicture}
\begin{axis}[axis lines = middle,
    smooth,
    no markers,
    xlabel = {$x$},
    ylabel = {$y$},
    minor tick num =1,
    grid=both,
    domain=0:2,]
        \addplot+[domain=0:1,samples=200,name path=A,black] {sqrt(x)};
        \addplot+[domain=0:1,name path=B,black] {x};
        \addplot[blue!50] fill between[of=A and B];
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

如果您set layers在 axis 环境中添加选项,它会将 hierarchricrhchaheal(!?) 顺序设置为standard 图层顺序,即axis background, axis grid, axis ticks, axis lines, axis tick labels, main, axis descriptions, axis foreground。这只是切换了绘制顺序。因此,这是功能而不是错误。否则,您可以将图层重新排序为自定义图层样式

\documentclass{standalone}
\usepackage{tikz,pgfplots}

\pgfplotsset{compat=1.10}
\usepgfplotslibrary{fillbetween}

\begin{document}

\begin{tikzpicture}
\begin{axis}[set layers,
    axis lines = middle,
    smooth,
    no markers,
    xlabel = {$x$},
    ylabel = {$y$},
    minor tick num =1,
    grid=both,
    domain=0:2,]
        \addplot+[domain=0:1,samples=200,name path=A,black] {sqrt(x)};
        \addplot+[domain=0:1,name path=B,black] {x};
        \addplot[blue!50] fill between[of=A and B];
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

percusse 的回答是正确的。

令我困惑的是,它pgfplots应该在遇到情节时立即自动执行此操作fill between

因此,还有第二个答案:


这是一个错误,将在下一版本的 pgfplots 中修复(可能1.11一旦准备好)。

相关内容