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 -
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, yshift
para colocar muchos de ellos. Lo que necesito para ver cómo es 10 x 10
la cuadrícula o incluso 100 x 100
la cuadrícula de dichos objetos. Sin embargo, me gustaría utilizar un for
bucle 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}
¡Abierto para comentarios o mejores soluciones!
Respuesta2
Otra solución más pics
que se puede utilizar dentro de foreach
bucles 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}