我正在绘制一个图形,并使用fill between
类似以下示例的方法为其下方的某些区域着色:
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin = 0,
xmax = 7,
ymin = 0,
ymax = 30]
\addplot+[name path=A,domain=0:6] {x^2};
\path[name path=B]
(\pgfkeysvalueof{/pgfplots/xmin},0) --
(\pgfkeysvalueof{/pgfplots/xmax},0);
\addplot[lightgray] fill between[of=A and B, soft clip={domain=1:5}];
\end{axis}
\end{tikzpicture}
\end{document}
这使:
在示例中,x 轴的刻度标记隐藏在填充区域的后面,因此我使用通常的方法axis on top
:
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin = 0,
xmax = 7,
ymin = 0,
ymax = 30,
axis on top]
\addplot+[name path=A,domain=0:6] {x^2};
\path[name path=B]
(\pgfkeysvalueof{/pgfplots/xmin},0) --
(\pgfkeysvalueof{/pgfplots/xmax},0);
\addplot[lightgray] fill between[of=A and B, soft clip={domain=1:5}];
\end{axis}
\end{tikzpicture}
\end{document}
这样就可以根据需要将刻度线移到最前面,但也有一个副作用:
请注意,第二张图片中的刻度标记位于轴上方:
axis on top
只有在与一起使用时才会出现这种情况fill between
。如何才能让刻度线绘制在填充上方,但仍在轴下方?
答案1
新答案
您观察到的行为被认为是漏洞PGFPlots v1.14 版现已修复此问题。axis on top
现在对您的示例进行 TeXing 可得到此结果(希望是理想的结果)。
旧答案
正如 percusse 所说他的评论您可以使用该set layers
功能并将填充区域移动到您喜欢的任何图层。下面是一个示例,您可以演示一下当您使用结果图像更改图层时会发生什么。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{
pgfplots.fillbetween,
}
\pgfplotsset{compat=1.13}
\begin{document}
\begin{tikzpicture}[
fill between/on layer={
% axis background % grid and ticks will be above filled area
axis grid % only ticks will be above filled area
% axis ticks % grid and ticks will be below filled area
% pre main % <-- initial value
},
]
\begin{axis}[
xmin=0,
xmax=7,
ymin=0,
ymax=30,
grid=major,
]
\addplot+[name path=A,domain=0:6] {x^2};
\path[name path=B]
(\pgfkeysvalueof{/pgfplots/xmin},0) --
(\pgfkeysvalueof{/pgfplots/xmax},0);
\addplot[red!10] fill between
[of=A and B, soft clip={domain=1:5}];
\coordinate (point to spy) at (1,0);
\coordinate (show magnification) at (2,20);
\end{axis}
\end{tikzpicture}
\end{document}
答案2
通常这不应该发生。从第 381 页的文档中可以看出axis on top
:
请注意,此功能不会影响绘图标记。我认为如果绘图标记与轴描述相交,会显得不自然。
所以这个库似乎有一个错误fillbetween
。作为解决方法,你可以不是使用它并以不同的方式创建填充。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin = 0,
xmax = 7,
ymin = 0,
ymax = 30,
axis on top]
\addplot[fill, lightgray, domain=1:5] {x^2} \closedcycle;
\addplot+[domain=0:6] {x^2};
\end{axis}
\end{tikzpicture}
\end{document}
输出: