我现在对绘制命令的参数的含义理解存在很大的问题。
对于有关神经网络的文档,我想举一个检测不同简单字母的系统的例子,并且我想在一个网格中绘制这些字母,其中每个像素都是可见的。
因此,我写下了这篇文章:
\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}