una matriz de objetos tikz

una matriz de objetos tikz

Utilizo el siguiente código para dibujar un objeto tikz.

\begin{tikzpicture}

    % Axis
    \draw (-0.5,0) -- (5.0,0);
    \draw (0,-0.5) -- (0,2.5);

    \node (rect) at (1.5,2) [draw,minimum height=0.65cm,minimum width=2cm,fill=gray!50] {};
    \node (rect) at (2.5,1) [draw,minimum height=0.65cm,minimum width=3cm,fill=gray!50] {};

\end{tikzpicture}

y el objeto parece -

ingrese la descripción de la imagen aquí

Lo que me gustaría tener es una cuadrícula de tales objetos. De modo que en la cuadrícula en cada ubicación (1,1), (1,2)... (n,n) se debe dibujar este objeto.

Por supuesto, puedo copiar y pegar este código usando alcance y uso xshift, yshiftpara colocar muchos de ellos. Lo que necesito para ver cómo es 10 x 10la cuadrícula o incluso 100 x 100la cuadrícula de dichos objetos. Sin embargo, me gustaría utilizar un forbucle para dibujar esta cuadrícula de nodos tikz. Quiero usar el bucle for mencionado en estepregunta. Sin embargo, mi nodo tikz consta de varios nodos (2 líneas y 2 rectángulos).

¿Es posible dibujar la cuadrícula de objetos usando el bucle for?

Respuesta1

De hecho es posible

\begin{tikzpicture}
  \foreach \x in {1,2,3}{
    \foreach \y in {1,2,3}{
    \begin{scope}[shift={(3*\x,2*\y)}]
      \draw (-0.25,0) -- (2.5,0);
      \draw (0,-0.25) -- (0,1.25);
      \node (rect) at (.75,1) [draw,minimum height=0.325cm,minimum width=1cm,fill=gray!50] {};
      \node (rect) at (1.25,.5) [draw,minimum height=0.325cm,minimum width=1.5cm,fill=gray!50] {};
    \end{scope}
    }
  }
\end{tikzpicture}

ingrese la descripción de la imagen aquí

¡Abierto para comentarios o mejores soluciones!

Respuesta2

Otra solución más picsque se puede utilizar dentro de foreachbucles o matrix.

\documentclass[border=2mm,tikz]{standalone}

\tikzset{
    myobject/.pic={
      \draw (-0.25,0) -- (2.5,0);
      \draw (0,-0.25) -- (0,1.25);
      \node (rect) at (.75,1) [draw,minimum height=0.325cm,minimum width=1cm,fill=gray!50] {};
      \node (rect) at (1.25,.5) [draw,minimum height=0.325cm,minimum width=1.5cm,fill=gray!50] {};
        }
}

\begin{document}

\begin{tikzpicture}
  \foreach \x in {1,2,3}{
    \foreach \y in {1,2,3}{
    \begin{scope}[shift={(3*\x,2*\y)}]
      \pic{myobject};
    \end{scope}
    }
  }
\end{tikzpicture}

\begin{tikzpicture}
  \matrix [column sep=3mm, row sep=3mm] {
      \pic{myobject}; &  \pic{myobject}; &  \pic{myobject}; \\
      \pic{myobject}; &  \pic{myobject}; &  \pic{myobject}; \\
      \pic{myobject}; &  \pic{myobject}; &  \pic{myobject}; \\
    };
\end{tikzpicture}

\end{document}

ingrese la descripción de la imagen aquí

información relacionada