我有一个数据文件,我想在同一轴上分别绘制奇数行/偶数行。但是选项table
似乎只在读取数据时应用一次,每个轴只发生一次(即在之后,\nextgroupplot
数据似乎被再次读取,或者在新的中tikzpicture
)。
\documentclass{article}
\usepackage{pgfplots}
\begin{filecontents}{data.dat}
1 1
2 4
3 3
4 8
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[no markers] table[each nth point=2]{data.dat};
\addplot[only marks] table[each nth point=2, skip first n=1]{data.dat};
\end{axis}
\end{tikzpicture}
should be:
\begin{tikzpicture}
\begin{axis}
\addplot[no markers] table{
1 1
3 3
};
\addplot[only marks] table{
2 4
4 8
};
\end{axis}
\end{tikzpicture}
\end{document}
table
是否有选项可以强制重新读取每个命令的数据?
答案1
我认为您不能使用skip first n
key 灵活地过滤坐标,因为它是pgfplotstable
读取表格或排版表格的 key。相反,您可以使用过滤器来消除奇数/偶数行
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\begin{filecontents}{data.dat}
1 1
2 4
3 3
4 8
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[no markers,each nth point=2] table {data.dat};
\addplot[only marks,x filter/.code={
\ifodd\numexpr\coordindex+1\relax
\def\pgfmathresult{}
\fi}
] table {data.dat};
\end{axis}
\end{tikzpicture}
\end{document}
当然,通过此代码,您可以制作自己的过滤器(通过使用Mod(,)
等),因此无论如何都是可行的。