Eu tenho um arquivo de dados do qual desejo plotar linhas pares/ímpares separadamente, no mesmo eixo. Mas as table
opções parecem se aplicar apenas uma vez, ao ler os dados, o que só acontece uma vez por eixo (ou seja, depois que \nextgroupplot
os dados parecem ser lidos novamente, ou em um novo 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 uma opção para forçar a releitura dos dados para cada table
comando?
Responder1
Não acho que você possa usar skip first n
key para filtrar as coordenadas de maneira flexível, pois é uma pgfplotstable
chave para ler a tabela ou digitá-la. Em vez disso, você pode usar filtros para eliminar as linhas ímpares/pares
\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}
É claro que com este código você pode criar seus próprios filtros (usando Mod(,)
etc.), então isso é possível de qualquer maneira.