使用 pgfplots 在特定间隔处使用不同的标记

使用 pgfplots 在特定间隔处使用不同的标记

我有许多大型数据文件,其中 x 行的范围在 0 到 z 之间。有没有一种简单的方法可以使用pgfplots/在特定间隔处设置不同的标记TikZ?如何生成一个图形,使得间隔 0、10、20、...、z 处的绘图标记例如为十字,而其余点的标记则为圆圈?

以下是可以帮助您入门的 MWE:

\documentclass{article}

\usepackage{tikz,pgfplots}
\pgfplotsset{compat=1.8}

\begin{filecontents*}{thePlot.dat}
x y
0 20.44
1 20.06
2 19.76
3 19.54
4 19.40
5 19.34
6 19.36
7 19.46
8 19.64
9 19.90
10  20.24
\end{filecontents*}

\begin{document}
  \begin{figure}[]
    \centering
    \begin{tikzpicture}
      \begin{axis}[
        xlabel={$x$},
        ylabel={$y$},]

        \addplot+[only marks,mark=x]
          table[x=x,y=y] {thePlot.dat};
      \end{axis}
    \end{tikzpicture}%
    \caption{The caption.}
  \end{figure}
\end{document}

答案1

您可以调整给出的代码PGFplots 标记第一点和最后一点为必填项

\documentclass[border=5mm]{standalone}

\usepackage{tikz,pgfplots}
\pgfplotsset{compat=1.8}

\pgfplotsset{
    mark repeat*/.style 2 args={
        scatter,
        scatter src=x,
        scatter/@pre marker code/.code={
            \pgfmathtruncatemacro\usemark{
                mod(\coordindex,#1)==0
            }
            \ifnum\usemark=1
                \pgfplotsset{mark=#2}
            \fi
        },
        scatter/@post marker code/.code={}
    }
}

\begin{filecontents*}{thePlot.dat}
x y
0 20.44
1 20.06
2 19.76
3 19.54
4 19.40
5 19.34
6 19.36
7 19.46
8 19.64
9 19.90
10  20.24
\end{filecontents*}

\begin{document}
    \begin{tikzpicture}
      \begin{axis}[
        xlabel={$x$},
        ylabel={$y$},]

        \addplot+[only marks, mark=o, mark repeat*={5}{x}]
          table[x=x,y=y] {thePlot.dat};
      \end{axis}
    \end{tikzpicture}
\end{document}

相关内容