我想在节点上显示数据的评估,而不是显示值。我的意思是,它应该显示计算结果,而不是\x + 3*\y
评估。怎么做?0 + 3*0
0
\documentclass [12pt]{article}
\begin{document}
\begin{tikzpicture}[y=-1cm]{every node/.style={font=\scriptsize}}
\draw [step=.1cm,very thin,black!10] (0,0) grid (6,6);
\draw [step=2cm,thin,black!50] (0,0) grid (6,6);
\draw [very thick,black] (0,0) rectangle (6,6);
\draw [->,very thick] (0,0) -- (6.5,0) node[below] {$X$};
\draw [->,very thick] (0,0) -- (0,6.5) node[right] {$Z$};
\foreach \x in {0,1,...,2} {
\foreach \y in {0,1,...,2} {
\node (node) [label={[yshift=-.6cm, xshift=.3cm]:\x + 3*\y}] at (2*\x,2*\y) {};
}
}
\end{tikzpicture}
\end{document}
答案1
我会将其作为循环的一部分进行评估。例如,
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[y=-1cm]{every node/.style={font=\scriptsize}}
\draw [step=.1cm,very thin,black!10] (0,0) grid (6,6);
\draw [step=2cm,thin,black!50] (0,0) grid (6,6);
\draw [very thick,black] (0,0) rectangle (6,6);
\draw [->,very thick] (0,0) -- (6.5,0) node[below] {$X$};
\draw [->,very thick] (0,0) -- (0,6.5) node[right] {$Z$};
\foreach \x in {0,1,...,2} {
\foreach \y [evaluate=\y as \z using {int(\x+3*\y)}] in {0,1,...,2} {
\node (node) [label={[yshift=-.6cm, xshift=.3cm]:\z}] at (2*\x,2*\y) {};
}
}
\end{tikzpicture}
\end{document}
或者,你也可以\z
在循环内计算。例如,
\pgfmathsetmacro\z{int(\x+3*\y)}
在排版之前\node
会有效地做同样的事情。
编辑[回应跟进]
您可以将标签放在节点内并根据需要设置锚点,而不必费心调整。例如,
\node [anchor=north west] at (2*\x,2*\y) {\z};
生产
答案2
您可以在 for 循环中使用合适的键来评估表达式。因此,如果您将代码更改为
\foreach \y[evaluate={\yi=int(\x + 3*\y);}] in {0,1,...,2} {
\node (node) [label={[yshift=-.6cm, xshift=.3cm]:\yi}] at (2*\x,2*\y) {};
这里int
需要返回整数而不是 1.0、2.0……等等。