tikz 的 \draw-command 中的参数到底是什么意思,我该如何绘制“T”?

tikz 的 \draw-command 中的参数到底是什么意思,我该如何绘制“T”?

我现在对绘制命令的参数的含义理解存在很大的问题。

对于有关神经网络的文档,我想举一个检测不同简单字母的系统的例子,并且我想在一个网格中绘制这些字母,其中每个像素都是可见的。

因此,我写下了这篇文章:

\documentclass{article}
\usepackage{tikz}
\usepackage[ngerman]{babel}
\begin{document}
\begin{figure}
    \begin{tikzpicture}
            \draw[step=1,black] (0, 0) grid (3, 3);

            \foreach \x in {1,2,3}
                    \draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north] {$\x$};
            \foreach \y in {1,2,3}
                    \draw (1pt,\y cm) -- (-1pt,\y cm) node[anchor=east] {$\y$};
    \end{tikzpicture}
    \label{figt}
    \caption{\glqq T\grqq}
\end{figure}
\end{document}

这给出了一个非常精细的网格。这正是我想要的。

现在我想要填写字段 [1, 0]、[1, 1]、[0, 2]、[1, 2]、[2, 2],以便可以看到“T”。

我以为它会很简单:

\draw[fill=black, opacity=.5] (1, 0) rectangle (1, 1);

认为,(1,0)是位置(底部,中间),(1,1)是矩形的宽度。

但最后网格又变成空了。所以,我想,也许 tikz 是从 1 开始的,而不是从 0 开始。所以我写道:

\draw[fill=black, opacity=.5] (2, 1) rectangle (1, 1);

结果完全相同:一个空网格。然后我把 (2, 1) 中的“1”改为零

\draw[fill=black, opacity=.5] (2, 0) rectangle (1, 1);

最后终于成功了:我填充了一个“像素”。由于我已经尝试过 (2, 1) 但没有效果,所以我尝试了 (2, 2),它填充了中心像素。但为什么呢?(2, 1) 是怎么回事?我不明白。它是否从 y 轴的 0 开始,从 x 轴的 1 开始?

那么,现在只剩下“T”的“帽子”了。我想,

\draw[fill=black, opacity=.5] (2, 3) rectangle (1, 1);

可能会对我有帮助。但是(启用透明度)我发现,这会“重新填充”(2,2)。为什么?

尝试填充(0,3)(我假设是左上角)我写道:

\draw[fill=black, opacity=.5] (0, 3) rectangle (1, 1);

但是这再次填充了两个单元格(0,3)和(0,2),因此“T”看起来像这样:

什么鬼
(来源:已保存

(使用此代码:

    \begin{tikzpicture}
            \draw[step=1,black] (0, 0) grid (3, 3);

            \foreach \x in {1,2,3}
                    \draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north] {$\x$};
            \foreach \y in {1,2,3}
                    \draw (1pt,\y cm) -- (-1pt,\y cm) node[anchor=east] {$\y$};

            \draw[fill=black, opacity=.5] (2, 0) rectangle (1, 1);
            \draw[fill=black, opacity=.5] (2, 3) rectangle (1, 1);

            \draw[fill=black, opacity=.5] (0, 3) rectangle (1, 1);
    \end{tikzpicture}

我非常确定这不是 tikz 或其他什么的错误,而只是我对 tikz 内部结构及其使用方法的无知。但是现在,在花了大约 1 个小时创建这个角色(但仍然没有成功)之后,我有点放弃了,毫无头绪。我对这些角色的理解是如此错误吗?还是我一次又一次犯了什么错误?

答案1

您需要使用+(1,1)++(1,1)(两者之间存在差异,但在这种情况下无关紧要)来使矩形的角从最后一点向上 1 个单位并向右 1 个单位:

\documentclass[tikz,border=5]{standalone}
\begin{document}
\tikz[%
  every cell/.style={draw=black},
  every cell 1/.style={fill=gray}
]
   \foreach \row [count=\y] in {%
     {1,1,1,1,1,1,1},%
     {1,0,0,1,0,0,1},%
     {0,0,0,1,0,0,0},%
     {0,0,0,1,0,0,0},%
     {0,0,0,1,0,0,0},%
     {0,0,0,1,0,0,0},%
     {0,0,1,1,1,0,0}}
     \foreach \cell [count=\x] in \row  
        \path [every cell/.try, every cell \cell/.try]
           (\x,-\y) rectangle ++(1,1);
\end{document}

在此处输入图片描述

相关内容