
Was ist das erwartete Verhalten, wenn man die Sprungkoordinaten und jeden n-ten Befehl in einem pgfplot kombiniert? Mit dem folgenden Code sollte ich ein Diagramm mit den Punkten (250, 30) und (300, 40) und ein weiteres Diagramm mit den Punkten (250, 14) und (300, 18) erhalten.
Stattdessen ist die erste Darstellung korrekt, während die zweite nur den Punkt (300, 40) erzeugt, als ob die beiden Optionen nicht zusammenpassen würden.
\usepackage{filecontents}
\begin{filecontents}{results.data}
Move Size Factor
A 250 30
B 250 14
C 250 10
A 300 40
B 300 18
C 300 7
\end{filecontents}
\begin{figure}[!ht]
\centering
\pgfplotsset{tick label style={font=\small}}
\begin{tikzpicture}
\begin{axis}[ scale only axis, yticklabel style={inner sep=0pt, align=right, xshift=-0.1cm} ]
\addplot+[color=blue,only marks,mark=*,mark options=solid, mark options={scale=0.4},each nth point={3}]table[x=Size,y=Factor]{results.data};
\end{axis}
\end{tikzpicture}
\end{figure}
\begin{figure}[!ht]
\centering
\pgfplotsset{tick label style={font=\small}}
\begin{tikzpicture}
\begin{axis}[ scale only axis, yticklabel style={inner sep=0pt, align=right, xshift=-0.1cm},
,skip coords between index={0}{1}
]
\addplot+[color=blue,only marks,mark=*,mark options=solid, mark options={scale=0.4},each nth point={3}]table[x=Size,y=Factor]{results.data};
\end{axis}
\end{tikzpicture}
\end{figure}
Antwort1
Ich nehme an, Sie meinten „Sie hofften zu bekommen“ statt „Sie erwarteten“. each nth point
hängt ein an x filter
, das alle Eingabekoordinaten außer jeder n-ten verwirft (wie im Handbuch geschrieben werden kann). Und jetzt fügen Sie ein weiteres hinzu, x filter
mit skip coords between index={0}{1}
demZusätzlichfiltert den ersten Punkt heraus. Somit erhält man das gleiche Ergebnis wie vorher, nur dass der erste gezeichnete Punkt fehlt.
Ich denke also, dass Sie Ihr eigenes Skript schreiben müssen, x filter
um das zu erreichen, was Sie möchten. Eine andere Möglichkeit wäre, die Funktionen mark repeat
und zu verwenden mark phase
, um das zu erreichen, was Sie möchten. Der Nachteil dieses Ansatzes besteht darin, dass die festgelegten Achsengrenzen ( xmin
,,,,, ) auch die „nicht xmax
angezeigten “ Punkte berücksichtigen. Falls Sie das stört, müssen Sie die Werte manuell festlegen.ymin
ymax
% used PGFPlots v1.14
\begin{filecontents}{results.data}
Move Size Factor
A 250 30
B 250 14
C 250 10
A 300 40
B 300 18
C 300 7
\end{filecontents}
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
only marks,
]
\addplot+ [
each nth point={3},
] table [x=Size,y=Factor] {results.data};
\addplot+ [
mark=square,
mark repeat={3},
] table [x=Size,y=Factor] {results.data};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
only marks,
]
\addplot+ [
each nth point={3},
skip coords between index={0}{1},
] table [x=Size,y=Factor] {results.data};
\addplot+ [
mark=square,
mark repeat={3},
mark phase=2,
] table [x=Size,y=Factor] {results.data};
\end{axis}
\end{tikzpicture}
\end{document}