다음 코드를 사용하여 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}