Я использую следующий код для рисования объекта 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}
и объект выглядит как -
Мне бы хотелось иметь сетку таких объектов. Так, чтобы в сетке в каждой точке (1,1), (1,2)... (n,n) был нарисован этот объект.
Конечно, я могу скопировать и вставить этот код, используя область видимости и использовать xshift, yshift
для того, чтобы разместить многие из них. Мне нужно увидеть, как 10 x 10
сетка или даже 100 x 100
сетка таких объектов. Однако я хотел бы использовать for
цикл для рисования этой сетки узлов tikz. Я хочу использовать цикл for, упомянутый в этомвопрос. Однако мой узел tikz состоит из нескольких узлов (2 линий и 2 прямоугольников).
Можно ли нарисовать сетку объектов с помощью цикла for?
решение1
Это действительно возможно
\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}
Открыт для комментариев и лучших решений!
решение2
Еще одно решение pics
, которое можно использовать в 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}