Ich verwende den folgenden Code, um ein Tikz-Objekt zu zeichnen.
\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}
und das Objekt sieht aus wie -
Ich hätte gern ein Raster mit solchen Objekten. So dass im Raster an jeder Position (1,1), (1,2)... (n,n) dieses Objekt gezeichnet werden soll.
Natürlich kann ich diesen Code kopieren und einfügen, indem ich den Gültigkeitsbereich verwende, xshift, yshift
um viele davon zu platzieren. Was ich brauche, ist, wie 10 x 10
das Raster oder sogar 100 x 100
das Raster solcher Objekte aussieht. Ich möchte jedoch eine for
Schleife verwenden, um dieses Raster aus Tikz-Knoten zu zeichnen. Ich möchte die in diesem Artikel erwähnte For-Schleife verwenden.Frage. Mein Tikz-Knoten besteht jedoch aus mehreren Knoten (2 Linien und 2 Rechtecke).
Ist es möglich, ein Raster von Objekten mithilfe einer For-Schleife zu zeichnen?
Antwort1
Es ist tatsächlich möglich
\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}
Offen für Kommentare oder bessere Lösungen!
Antwort2
Nur eine weitere Lösung , die innerhalb von Schleifen oder pics
verwendet werden kann .foreach
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}