尝试重现这个问题花了很长时间,我不知道发生了什么。以下是
\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}