我在绘制具有定义偏移的多条线时遇到了问题。有多个 y 值,我不想复制每个命令,因此我尝试对 和 进行 fory index
循环shift
。
使用当前代码,我得到了所有移位数据的图。
\documentclass[border=5pt,tikz]{standalone}
\usepackage{
pgfplots,
pgfplotstable,
filecontents
}
\begin{filecontents}[overwrite]{test.txt}
0 0.87 0.21 0.64 0.49 0.40 0.94
1 0.67 0.74 0.86 0.19 0.86 0.83
2 0.87 0.34 0.49 0.32 0.59 0.92
3 0.25 0.09 0.76 0.35 0.27 0.29
4 0.27 0.52 0.91 0.64 0.67 0.46
5 0.34 0.44 0.45 0.56 0.51 0.67
\end{filecontents}
\def\xmin{0}
\def\xmax{5}
\def\ymin{0}
\def\ymax{6}
\def\shift{1}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ymin=\ymin,
ymax=\ymax,
xmin=\xmin,
xmax=\xmax,
restrict y to domain=\xmin:\xmax,
restrict y to domain=\ymin:\ymax,
enlargelimits=0.1
]
\pgfplotsinvokeforeach{0,1,...,5}{
\foreach \i in {1,2,...,6}{
\addplot[
color=black,
smooth,
shift={(axis direction cs:0,#1*\shift)},
]
table[
x index=0,
y index=\i,
]{test.txt};
}
}
\end{axis}
\end{tikzpicture}
\end{document}
有没有办法在 for 循环中绘制每条线一次并相互移动?
编辑:
为了清楚起见:我想以一定的偏移单独绘制每条线。
答案1
在查看 PgfPlots 手册时,我找到了该问题的解决方案:
\pgfplotsforeachungrouped \i/\j in {0/1,1/2,2/3,3/4,4/5,5/6}{
\edef\temp{
\noexpand
\addplot[
color=black,
smooth,
shift={(axis direction cs:0,\i*\shift)},
]
table[
x index=0,
y index=\j,
]{test.txt};
}\temp
}
在这里,您必须单独输入每个索引,如果数据量较大,这可能会有点麻烦。所以如果有人知道“更简单”的解决方案,请告诉我。