编辑

编辑

我想在节点上显示数据的评估,而不是显示值。我的意思是,它应该显示计算结果,而不是\x + 3*\y评估。怎么做?0 + 3*00

\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……等等。

相关内容