不一致的 pgfplot - 发现差异

不一致的 pgfplot - 发现差异

尝试重现这个问题花了很长时间,我不知道发生了什么。以下是

\documentclass{standalone}
\usepackage{pgfplotstable}
\usepackage{filecontents}
\usetikzlibrary{pgfplots.groupplots}
\pgfplotsset{compat=1.16}

\begin{filecontents}{data.dat}
0.0 0.0
0.5 0.5
1.0 0.0
0.0 0.0
\end{filecontents}

\begin{document}
\newcommand{\lb}{165581}
\newcommand{\ub}{165583}
\begin{tikzpicture}
    \begin{axis}[ymin=-0.1, ymax=0.6,xmin=\lb,xmax=\ub],
        \foreach \x in {\lb, \lb+1} {
            \addplot+[no marks] table[x expr=\thisrowno{0}+\x, y index={1}] {data.dat};
        }  
    \end{axis}
\end{tikzpicture}
\begin{tikzpicture}
    \begin{axis}[ymin=-0.1, ymax=0.6,xmin=165581,xmax=165583],
        \foreach \x in {165581, 165582} {
            \addplot+[no marks] table[x expr=\thisrowno{0}+\x, y index={1}] {data.dat};
        }  
    \end{axis}
\end{tikzpicture}
\end{document}

生产,

这

为什么情节不一致?

答案1

区别在于,在第一种情况下,你给出了pgfplots它需要解析的内容,而在第二种情况下,你给出了一个整数。你可以确保在第一种情况下也有一个整数,从而使它们相等。实现这一点的一种方法是将其替换\lb+1\the\numexpr\lb+1

\documentclass{standalone}
\usepackage{pgfplotstable}
\usepackage{filecontents}
\usetikzlibrary{pgfplots.groupplots}
\pgfplotsset{compat=1.16}

\begin{filecontents}{data.dat}
0.0 0.0
0.5 0.5
1.0 0.0
0.0 0.0
\end{filecontents}

\begin{document}
\newcommand{\lb}{165581}
\newcommand{\ub}{165583}
\begin{tikzpicture}
    \begin{axis}[ymin=-0.1, ymax=0.6,xmin=\lb,xmax=\ub],
        \foreach \x in {\lb,\the\numexpr\lb+1} {
            \addplot+[no marks] table[x expr=\thisrowno{0}+\x, y index={1}] {data.dat};
        }  
    \end{axis}
\end{tikzpicture}
\begin{tikzpicture}
    \begin{axis}[ymin=-0.1, ymax=0.6,xmin=165581,xmax=165583],
        \foreach \x in {165581, 165582} {
            \addplot+[no marks] table[x expr=\thisrowno{0}+\x, y index={1}] {data.dat};
        }  
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容