Zunehmende Dicke der Ränder in einem quadratischen Raster

Zunehmende Dicke der Ränder in einem quadratischen Raster

Hier ist der Code für ein Diagramm, das ich gerade generiert habe:

\begin{tikzpicture}[fill=black]
\matrix[matrix of nodes, nodes={draw,minimum size=1cm}, nodes in empty cells,column sep=-\pgflinewidth,row sep=-\pgflinewidth](M){
           &          &   |[fill]|   &      &     &   |[fill]|   &          &    &   |[fill]|     \\

           & |[fill]| &              &              &      |[fill]|     &              &     &      |[fill]|  &      \\
  |[fill]| &         &         &        |[fill]|      &         &              &    |[fill]|      &       &      \\
          &          &   |[fill]|   &      &     &   |[fill]|   &          &    &   |[fill]|     \\
           & |[fill]| &              &              &      |[fill]|     &              &     &      |[fill]|  &      \\
     |[fill]| &         &         &        |[fill]|      &         &              &    |[fill]|      &       &      \\
          &          &   |[fill]|   &      &     &   |[fill]|   &          &    &   |[fill]|     \\
           & |[fill]| &              &              &      |[fill]|     &              &     &      |[fill]|  &      \\
 |[fill]| &         &         &        |[fill]|      &         &              &    |[fill]|      &       &      \\         
};
\end{tikzpicture}

Im Grunde hilft mir dieser Code, mein 9 x 9 großes Brett mit weißen und schwarzen Quadraten zu füllen. Wenn ich dieses Brett nun in 9 3 x 3 große Quadrate zerlege, frage ich mich, ob es eine Möglichkeit gibt, deutlich erkennbare dicke Ränder um die Grenzen jedes 3 x 3 großen Quadrats im Block zu erstellen. Das heißt, ich möchte, dass die Grenzen jedes 3 x 3 großen Quadrats im Vergleich zu den anderen Linien einen satteren Schwarzton aufweisen. (Das liegt daran, dass ich versuche, ein Ergebnis zu beweisen, und das oben Gesagte würde mir helfen, meinen Standpunkt besser zu veranschaulichen.)

Bearbeiten:Hmm, also den Antworten zufolge, die ich erhalten habe, gibt es anscheinend mehrere Möglichkeiten, dies zu tun: Eine besteht darin, eine Matrixliste zu erstellen und dann einzeln anzugeben, ob jede Zelle schwarz oder weiß sein soll. Tatsächlich ist diese Methode viel intuitiver und relativ gut durchführbar, solange Ihr Board nicht zu groß ist. Die zweite Methode beinhaltet eine nette Anwendung modularer Arithmetik, und obwohl es ein wenig Zeit braucht, um sie zu verstehen, besteht ihr Hauptvorteil darin, dass Sie das gesamte Board problemlos mit Farben füllen können, was von Vorteil ist, wenn Sie ein größeres Board haben. Zumindest ist das das, was ich herausfinden konnte.

Antwort1

Ich wusste nicht, ob Sie nur einen oder alle Ränder zeichnen möchten, also habe ich Codes für beide Situationen hinzugefügt. Der grundlegende Punkt ist, dass die Knoten in der Matrix Namen haben, sodass Sie verwenden können

\draw[blue,thick] (M-1-1.north west) rectangle (M-3-3.south east);

Vollständiger Code:

\documentclass[tikz,border=3mm]{standalone}
\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]|   &      &     &   |[fill]|   &          &    &   |[fill]|     \\

           & |[fill]| &              &              &      |[fill]|     &              &     &      |[fill]|  &      \\
  |[fill]| &         &         &        |[fill]|      &         &              &    |[fill]|      &       &      \\
          &          &   |[fill]|   &      &     &   |[fill]|   &          &    &   |[fill]|     \\
           & |[fill]| &              &              &      |[fill]|     &              &     &      |[fill]|  &      \\
     |[fill]| &         &         &        |[fill]|      &         &              &    |[fill]|      &       &      \\
          &          &   |[fill]|   &      &     &   |[fill]|   &          &    &   |[fill]|     \\
           & |[fill]| &              &              &      |[fill]|     &              &     &      |[fill]|  &      \\
 |[fill]| &         &         &        |[fill]|      &         &              &    |[fill]|      &       &      \\         
};
\draw[blue,thick] (M-1-1.north west) rectangle (M-3-3.south east);
\end{tikzpicture}

\begin{tikzpicture}
\matrix[matrix of nodes, nodes={draw,minimum size=1cm}, nodes in empty cells,column sep=-\pgflinewidth,row sep=-\pgflinewidth](M){
           &          &   |[fill]|   &      &     &   |[fill]|   &          &    &   |[fill]|     \\

           & |[fill]| &              &              &      |[fill]|     &              &     &      |[fill]|  &      \\
  |[fill]| &         &         &        |[fill]|      &         &              &    |[fill]|      &       &      \\
          &          &   |[fill]|   &      &     &   |[fill]|   &          &    &   |[fill]|     \\
           & |[fill]| &              &              &      |[fill]|     &              &     &      |[fill]|  &      \\
     |[fill]| &         &         &        |[fill]|      &         &              &    |[fill]|      &       &      \\
          &          &   |[fill]|   &      &     &   |[fill]|   &          &    &   |[fill]|     \\
           & |[fill]| &              &              &      |[fill]|     &              &     &      |[fill]|  &      \\
 |[fill]| &         &         &        |[fill]|      &         &              &    |[fill]|      &       &      \\         
};
\draw[blue,thick] foreach \X in {1,2,3} 
{foreach \Y in {1,2,3}
{(M-\the\numexpr3*\Y-3+1\relax-\the\numexpr3*\X-3+1\relax.north west) rectangle
(M-\the\numexpr3*\Y-3+3\relax-\the\numexpr3*\X-3+3\relax.south east)}};
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Ein anderer Weg mit Syntax x ? y : z(wenn x, dann y, sonst z). Die Dicke wird frei gesteuert [line width]. Die Option [shift={(1,1)}]ergibt sich aus der Definition des gridBefehls.

Bildbeschreibung hier eingeben

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}
\def\n{9}
\foreach \i in {1,...,\n} 
\foreach \j in {1,...,\n}
{
\pgfmathparse{mod(\i+\n-\j,3) ? "white" : "black"}
\edef\colour{\pgfmathresult}
\fill[\colour] (\i,\j) rectangle +(1,1);
}
\draw (1,1) grid (\n+1,\n+1);
\draw[magenta,line width=1pt,shift={(1,1)}] (0,0) grid[step=3cm] (\n,\n);
\end{tikzpicture}
\end{document}

verwandte Informationen