матрица объектов тикз

матрица объектов тикз

Я использую следующий код для рисования объекта 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}

введите описание изображения здесь

Связанный контент