Tengo un archivo de datos desde el cual quiero trazar filas pares/impares por separado, en el mismo eje. Pero las table
opciones parecen aplicarse solo una vez, al leer los datos, lo que solo ocurre una vez por eje (es decir, después de que \nextgroupplot
los datos parecen leerse nuevamente o en un nuevo 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}
¿Existe una opción para forzar la relectura de los datos de cada table
comando?
Respuesta1
No creo que puedas usar skip first n
la clave para filtrar las coordenadas de manera flexible, ya que es una pgfplotstable
clave para leer la tabla o componerla. En su lugar, puede utilizar filtros para eliminar las filas pares o impares.
\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}
Por supuesto, con este código puedes crear tus propios filtros (usando, Mod(,)
etc.), por lo que de todos modos es factible.