我正在创建包含大量数据点的图,并且每个图还包括一条独立但与这些点重合的线。
问题在于标记会挡住线的前面,因此在图中标记过多的区域,线就看不清楚了。以下 MWE 包含一个点较少的图和另一个点较多的图来说明这一点。
\documentclass[12pt]{article}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=newest}
\pgfplotscreateplotcyclelist{marks}{%
{black!50,ultra thin,mark=o,only marks},
{black,very thick,mark=none},
{blue!70!black!50,mark=square,only marks},
{blue!70!black,very thick,mark=none},
{red!70!black!50,mark=triangle,only marks},
{red!70!black,very thick,mark=none},
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[legend entries={0,...,6},
legend pos=outer north east,
cycle list name=marks]
\addplot+[samples=10] {x};
\addlegendentry{10 samples}
\addplot {x};
\addlegendentry{}
\addplot+[samples=100] {x-2};
\addlegendentry{100 samples}
\addplot {x-2};
\addlegendentry{}
\addplot+[samples=200] {x-4};
\addlegendentry{200 samples}
\addplot {x-4};
\addlegendentry{}
\end{axis}
\end{tikzpicture}
\end{document}
结果如下:
我尝试将线图放在散点图之前,但没有成功。如何才能使线在标记前面清晰可见?
答案1
这类似于前景中带有 pgfplots 的误差线:默认情况下,所有标记都绘制在图表顶部的一层中。这样做是为了可以独立于正常剪切打开或关闭对它们的剪切。您可以通过设置来告诉 PGFPlots 对每组标记使用单独的层,而不是将它们全部放在同一顶层clip mode=individual
。这意味着后面的图表将绘制在前面的标记之上。
\documentclass[12pt]{article}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=newest}
\pgfplotscreateplotcyclelist{marks}{%
{black!50,ultra thin,mark=o,only marks},
{black,very thick,mark=none},
{blue!70!black!50,mark=square,only marks},
{blue!70!black,very thick,mark=none},
{red!70!black!50,mark=triangle,only marks},
{red!70!black,very thick,mark=none},
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
clip mode=individual,
legend entries={0,...,6},
legend pos=outer north east,
cycle list name=marks]
\addplot+[samples=10] {x};
\addlegendentry{10 samples}
\addplot {x};
\addlegendentry{}
\addplot+[samples=100] {x-2};
\addlegendentry{100 samples}
\addplot {x-2};
\addlegendentry{}
\addplot+[samples=200] {x-4};
\addlegendentry{200 samples}
\addplot {x-4};
\addlegendentry{}
\end{axis}
\end{tikzpicture}
\end{document}