
Каково ожидаемое поведение объединения координат пропуска и каждой n-ной команды в pgfplot. Используя следующий код, я ожидал получить график с точками (250, 30) и (300, 40) и другой график с точками (250, 14) и (300, 18).
Вместо этого первый график верен, а второй выдает только точку (300, 40), как будто эти два варианта не могут сочетаться друг с другом.
\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}
решение1
Я полагаю, вы имели в виду "вы надеялись получить" вместо "вы ожидали". each nth point
добавляет , x filter
который отбрасывает все, кроме каждой n-ной входной координаты (как можно написать в руководстве). И теперь вы добавляете еще один, x filter
с skip coords between index={0}{1}
которымкроме тогоотфильтровывает первую точку. Таким образом, вы получаете тот же результат, что и раньше, за исключением того, что первая нарисованная точка отсутствует.
Поэтому я думаю, что вам придется написать свой собственный, x filter
чтобы сделать то, что вы хотите. Другой возможностью было бы использовать функции mark repeat
и mark phase
для достижения того, что вы хотите. Недостатком этого подхода является то, что определенные пределы осей ( xmin
, xmax
, 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}