我使用以下代码来绘制 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
网格甚至网格。但是我想使用循环来绘制这个 tikz 节点网格。我想使用本文中提到的 for 循环100 x 100
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}