我想绘制 50 个矩形,高度为 3,宽度为 1。这些矩形之间应该有空间。我还想用蓝色填充 1、5、7、10、16、22 号矩形,用绿色填充 2、14、35、44、46 号矩形,其他矩形用红色填充。
在 Tikz 中是否有使用 \foreach 语句的简单方法?或者还有其他简单的方法吗?我尝试过这样的方法:
\begin{figure}[!htb]
\centering
\scalebox{0.32}{
\begin{tikzpicture}
\foreach \x in {0, 1, ..., 50 }
\draw (\x,0) rectangle (\x,10);
%\draw [draw=black] (\x,4) rectangle (0.5,0);
%\draw (\x,0) rectangle (0.5,4);
%\draw [Stealth-Stealth, color = blue, thin] (\x, 0.3) -- (\x, 6.8);
\end{tikzpicture}
}
\caption{}
\end{figure}
答案1
\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
\foreach \x in {1,...,50}
\fill[red] (1.1*\x,3) rectangle (1.1*\x+1,0);
\foreach \x in {1,5,7,10,16,22}
\fill[blue] (1.1*\x,3) rectangle (1.1*\x+1,0);
\foreach \x in {2,14,35,44,46}
\fill[green] (1.1*\x,3) rectangle (1.1*\x+1,0);
\end{tikzpicture}
\end{document}
答案2
只是为了好玩,另一个版本带有矩阵和彩色单元格列表。
\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[
mymatrix/.style={matrix of nodes, nodes in empty cells,
nodes={fill=red, anchor=center, minimum width=3mm, minimum height=8mm, inner sep=0pt, outer sep=0pt},
column sep=1pt,
},
bluecell/.style={column #1/.style={nodes={fill=blue}}},
greencell/.style={column #1/.style={nodes={fill=green}}},
]
\matrix[mymatrix, bluecell/.list={1,5,7,10,16,22}, greencell/.list={2,14,35,44,46}]
{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\\};
\end{tikzpicture}
\end{document}