TikZ 网格 - 通过直接访问来填充单元格

TikZ 网格 - 通过直接访问来填充单元格

前天我发现了 TikZ,现在我尝试创建一个有 10 列和 10 行的网格。用颜色以恒定且清晰的方式填充网格框会很方便。我希望从网格矩阵之外做到这一点。

我能够用 (M) 命名矩阵。在 pgf 的用户手册中,我只能找到一个使用命名命令的实例。

在下图中,您可以看到直接访问两个节点产生的一条水平黑线。

我怎样才能使用命令“填充”而不是“绘制”,以便以清晰的方式填充一个单元格?

谢谢。


\documentclass{article}
\usepackage{tikz}

\usetikzlibrary{matrix}

\begin{document}

\begin{tikzpicture}
    \matrix[matrix of nodes, nodes={draw,minimum size=1cm}, nodes in empty cells,column sep=-\pgflinewidth, row sep=-\pgflinewidth](M){
 |[fill=green]|  &  |[fill=red]|     & |[fill=blue]| & |[fill=purple]|  \\
 |[fill=yellow]| &  |[fill=orange]|  & |[fill=green]| & |[fill=brown]|  \\
      };

\draw[black] (M-1-1) -- (M-1-3) ;

\end{tikzpicture}

\end{document}

在此处输入图片描述

答案1

欢迎来到 TeX.SE!如果我理解正确的话,那么你应该关注以下内容:

在此处输入图片描述

编辑:

真尴尬,我之前的解释是错的,所以我删除了它并从第一个解决方案中恢复了最后一个例子。你有正确的矩阵设置……

在第一次尝试中,我忽略了绘制单元格边框的问题。关于它,使用矩形覆盖边框。因此,只有当矩形填充为黑色(as are cells' borders), at other fill colors, borders of colored cells are covered by填充. This can be avoided by use适合库并且仅在边框内绘制单元格时,才能获得视觉上正确的结果:

\documentclass[border=3.141592, varwidth]{standalone}
\usepackage{tikz}
\usetikzlibrary{fit,
                matrix}

\begin{document}
    \begin{tikzpicture}
\matrix (m) [matrix of nodes, 
             nodes={draw, minimum size=1cm}, 
             nodes in empty cells,
             column sep=-\pgflinewidth, % <---
             row sep=-\pgflinewidth]    % <---
{
    &   &   &   \\
    &   &   &   \\
};

\node[fill, inner sep=-\pgflinewidthpt, fit=(m-2-3)] {}; % <---
    \end{tikzpicture}

    \begin{tikzpicture}
\matrix (m) [matrix of nodes,
             nodes={draw, minimum size=1cm},
             nodes in empty cells,
             column sep=-\pgflinewidth,  % <---
             row sep=-\pgflinewidth]     % <---
{
    &   &               &   \\
    &   & |[fill=teal]| &   \\
};
    \end{tikzpicture}
\end{document}

相关内容