参照 PGFPLOTS 手册 1.18.1 版第 79 页,我发现绘制以下图形需要一组坐标:
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+ [
const plot mark mid,
] coordinates {
(0,0.1) (0.1,0.15) (0.2,0.5) (0.3,0.62)
(0.4,0.56) (0.5,0.58) (0.6,0.65) (0.7,0.6)
(0.8,0.58) (0.9,0.55) (1,0.52)
};
\end{axis}
\end{tikzpicture}
\end{document}
现在,手动设置这些坐标非常繁琐,尤其是当您有 10 个以上的坐标时。所以我想使用foreach
循环分别定义 x 和 y 坐标。
问题是,当我尝试在coordinates
set 中使用 forloop 时,编译似乎需要很长时间。
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+ [
const plot mark mid,
] coordinates {
\foreach \i in {1,2,3} (\i,\i+2)
};
\end{axis}
\end{tikzpicture}
\end{document}
另一方面,如果我forloop
在之外做addplot
,就不会得到预期的结果:
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\foreach \i in {1,2,3} {
\addplot+ [
const plot mark mid,
] coordinates {
(\i,\i+2)
};}
\end{axis}
\end{tikzpicture}
\end{document}
答案1
在这里,我\expanded
和\global
ly 将\foreach
结果收集到一个标记列表中\mycoords
。然后我在中使用它\addplot
。
\documentclass[tikz,margin=1mm]{standalone}
\usepackage{pgfplots}
\newtoks\mycoords
\begin{document}
\mycoords{}
\foreach \i in {1,2,3} {\global\mycoords\expandafter{%
\expanded{\the\mycoords(\i,\i+2)}} }
\begin{tikzpicture}
\begin{axis}
\addplot+ [
const plot mark mid,
] coordinates{\the\mycoords};
\end{axis}
\end{tikzpicture}
\end{document}