我试图为上轮廓线组着色。由于我分两步进行(一步用于组的弯曲部分,另一步用于组的直线部分),因此两者之间出现了一些重叠,导致出现了一条不应该出现的较暗的垂直线。
我的猜测是,较暗的线条是由于我试图填充的两个区域重叠而出现的,而不是渲染错误。我尝试稍微减小第二个区域(指令的矩形fill
)的大小,但结果区域之间出现了一条白线(而不是暗线)。我相信我应该定义,path setZ
以便我一直到轴的末端,但我不知道该怎么做。这是我的 MWE
\documentclass{article}
\usepackage{tikz,pgfplots}
\pgfplotsset{compat = newest}
\usepgfplotslibrary{fillbetween}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
ticks=none,
axis x line=bottom,
axis y line=left,
xmin=0,xmax=16,
ymin=0,ymax=16,
]
\addplot[
name path=setZ,
] table {
4.68 12
5.68 9
6.68 7
7.68 6
10.16 5
};
\path [name path=axiss] (4.68,16) -- (10.16,16);
\addplot[gray,opacity=0.2] fill between [
of=setZ and axiss];
\fill[gray,opacity=0.2] (10.16,5)--(16,5)--(16,16)--(10.16,16);
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
编辑:一种可能性是在路径中创建最后一个点,使其到达图示轴的末端,例如
\addplot[white,name path=setZ] table {
4.68 12
5.68 9
6.68 7
7.68 6
10.16 5
16 5
};
在绘图本身之前,并相应地修改 axiss 的定义。但是,我将数据存储在一个文件中,我不希望有两个几乎相同的单独文件。
答案1
fillbetween
为了避免出现观看伪影,您应该用一次填充填充整个区域。这个简单的区域无需使用。
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\pgfplotstableread{
4.68 12
5.68 9
6.68 7
7.68 6
10.16 5
}\loadedtable
\begin{axis}[
axis lines=center,
ticks=none,
xmin=0, xmax=16,
ymin=0, ymax=16,
]
\addplot[draw=none, fill=gray!20] table {\loadedtable} -| (current axis.north east) -| cycle;
\addplot[mark=none] table {\loadedtable};
\end{axis}
\end{tikzpicture}
\end{document}