表格中的 tikz 带有右侧彩色箭头以及 xshift 和 y shift

表格中的 tikz 带有右侧彩色箭头以及 xshift 和 y shift

我有以下代码,如下图所示。我现在得到的输出就像下面的第一张图片一样。

电流输出

我希望输出如下图所示,中间有蓝色和红色箭头。我似乎无法更改箭头的颜色和位置。
所需输出

代码如下。有人能帮帮我吗?

\begin{tabular}{|r|r|r|r|r|r|}
\hline
V   & M   & V   & M   & V   & M   \\ \hline
6   & 4  & NaN & NaN & NaN & NaN \\ \hline
7   & 3   & 5   & 5 \tikzmark{f}   & NaN & NaN \\ \hline
NaN & NaN & 8   & \tikzmark{d}{2} \tikzmark{e}  & \tikzmark{c}{4}   &     \tikzmark{b}{6}   \\ \hline
NaN & NaN & NaN & NaN & 10  & \tikzmark{a}{0}   \\ \hline
\end{tabular}
\begin{tikzpicture}[overlay, remember picture, shorten >=.5pt, shorten <=.5pt]
\draw [->] ({pic cs:a}) [line width=0.35mm, yshift=-1] to ({pic cs:b});
\draw [->] ({pic cs:c}) [line width=0.35mm, yshift=-1] to ({pic cs:d});
\draw [->] ({pic cs:e}) [line width=0.35mm, yshift=-1] to ({pic cs:f});
\end{tikzpicture}

答案1

\tikzmark我宁愿matrix of math nodes在 tikz 中使用而不是 使用\matrix。当您在表格环境中绘制条目时,更改为使用matrix of math nodes实际上可以简化代码。

我将给出输出、代码,然后解释其工作原理。首先,输出:

在此处输入图片描述

接下来是代码:

\documentclass[border=5mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}

  \begin{tikzpicture}[>=stealth,->,shorten >=2pt,looseness=.5,auto]
    \matrix (M)[matrix of math nodes,row sep=0mm,column sep=0mm,
                nodes=draw, minimum size=12mm]{
        V   & M   & V   & M   & V   & M   \\
        6   & 4   & NaN & NaN & NaN & NaN \\
        7   & 3   & 5   & 5   & NaN & NaN \\
        NaN & NaN & 8   & 2   &  4  &  6  \\
        NaN & NaN & NaN & NaN & 10  &  0  \\
     };
    \draw[ultra thick,blue,->] (M-5-6.west) -- (M-4-6.west);
    \draw[ultra thick,red,->]  (M-5-5.north) -- (M-5-4.north);
    \draw[ultra thick,blue,->] (M-4-4.west) -- (M-3-4.west);
    \draw[ultra thick,red,->]  (M-4-3.north) -- (M-4-2.north);
    \draw[ultra thick,blue,->] (M-3-2.west) -- (M-2-2.west);
  \end{tikzpicture}

\end{document}

现在解释一下:

\matrix (M)命令设置一个矩阵,其坐标由 指定(M-<row>-<col>),其中<row><col>是行和列索引。如果您改为写 ,\matrix (mat)那么您会将坐标称为(mat-<row>-<col>)

接下来,您可以使用northsouthwestnorth west来调整节点规范引用矩阵单元格的哪个部分。例如,(M-4-3.west)指的是第 4 行第 3 列中节点的西边缘。现在几乎所有内容都应该清楚了,我希望!

matrix of math nodes我已经设置了row sep=0mm,column sep=0mm, nodes=draw, minimum size=12mm。这是绘制网格的方法:行和列之间没有间隙,每个节点周围都应该有一个矩形,最小单元格大小为12m选择 的最小单元格大小以适合 OP 单元格的内容。就我个人而言,我不会绘制网格( 的文档书签包解释了为什么应该避免在表格中出现垂直线),但这正是问题所要求的,所以......

如果您希望布局与 MWE 中的布局相同,使用矩形单元格而不是我代码中的方形单元格,则将 更改为minimum size=12mmminimum width=12mm为了显示它的外观,并进一步突出显示节点规格,如果您将 draw 语句更改为

    \draw[ultra thick,blue,->] (M-5-6.south west) -- (M-4-6.south west);
    \draw[ultra thick,red,->]  (M-5-5.north east) -- (M-5-4.north west);
    \draw[ultra thick,blue,->] (M-4-4.south west) -- (M-3-4.south west);
    \draw[ultra thick,red,->]  (M-4-3.north east) -- (M-4-2.north west);
    \draw[ultra thick,blue,->] (M-3-2.south west) -- (M-2-2.south west);

然后minimum size=12mm你得到

在此处输入图片描述

编辑(回答评论中的问题)

要给列添加阴影,只需将以下内容every odd columnevery even column样式添加到矩阵选项中:

every odd column/.style={nodes={fill=pink}},
every even column/.style={nodes={fill=blue!20!white}},

有了这些,你的图片就变成了:

在此处输入图片描述

我认为您看到的“双”线是渲染错误,可能与浏览器有关,打印时可能不会出现(我不知道,我没有检查过)。对于上面的图片,我以一种非常特别指定通过将行和列分隔更改为:

row sep=-0.1mm,column sep=-0.1mm

相关内容