Ich habe eine Datendatei, aus der ich ungerade/gerade Zeilen separat auf derselben Achse darstellen möchte. Aber die table
Optionen scheinen nur einmal zu gelten, beim Einlesen der Daten, was nur einmal pro Achse geschieht (d. h. nach einem \nextgroupplot
werden die Daten anscheinend erneut oder in einer neuen gelesen 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}
Gibt es eine Option, das erneute Lesen der Daten für jeden table
Befehl zu erzwingen?
Antwort1
Ich glaube nicht, dass Sie skip first n
den Schlüssel verwenden können, um die Koordinaten flexibel zu filtern, da es sich um einen pgfplotstable
Schlüssel zum Lesen oder Setzen der Tabelle handelt. Stattdessen können Sie Filter verwenden, um die ungeraden/gerade nummerierten Zeilen zu eliminieren
\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}
Natürlich können Sie mit diesem Code Ihre eigenen Filter erstellen (indem Sie Mod(,)
usw. verwenden), es ist also trotzdem machbar.