带箭头和标签的矩阵

带箭头和标签的矩阵

我想请教您如何使用 latex 编写矩阵。为了解释行和列的含义,矩阵应该被两个箭头包围,一个在左侧指向下方,一个在上方指向右侧。箭头标记的位置。我尝试了几种方法,例如:

\[
M_{reg} = \bordermatrix{~  & 0 & 1 & 2 & 3 & 4 &  \cr
                  0 & 0 & 0 & 0 & 1 & 1 \cr
                  1 & 0 & 0 & 1 & 1 & 1 \cr
                  2 & 0 & 0 & 1 & 1 & 0 \cr
                  3 & 0 & 0 & 1 & 1 & 0 \cr
                  4 \downarrow{Ca^{2+}} & 0 & 0 & 0 & 0 & 0 \cr
                  %Ca^{2+}
                  }^{\xrightarrow{DAG}}
\]

但它并不漂亮,而且没有正确对齐。您有什么想法或指示来正确绘制该矩阵吗?

答案1

TikZ 的另一种方法类似于突出显示矩阵中的元素

\documentclass{article}
\usepackage{tikz}
\newcommand{\tikzmark}[1]{\tikz[overlay, remember picture] \coordinate (#1);}
\begin{document}
\[
  M_{reg} = \qquad \bordermatrix{~  & \tikzmark{harrowleft} 0 & 1 & 2 & 3
                        & 4\tikzmark{harrowright}  \cr
                    \tikzmark{varrowtop} 0 & 0 & 0 & 0 & 1 & 1 \cr
                    1 & 0 & 0 & 1 & 1 & 1 \cr
                    2 & 0 & 0 & 1 & 1 & 0 \cr
                    3 & 0 & 0 & 1 & 1 & 0 \cr
                    \tikzmark{varrowbottom}4 & 0 & 0 & 0 & 0 & 0 \cr
                    }
\]
\tikz[overlay,remember picture] {
  \draw[->] ([yshift=3ex]harrowleft) -- ([yshift=3ex]harrowright)
            node[midway,above] {\scriptsize DAG};
  \draw[->] ([yshift=1.5ex,xshift=-2ex]varrowtop) -- ([xshift=-2ex]varrowbottom)
            node[near end,left] {\scriptsize $Ca^{2+}$};
}
\end{document}

带箭头的矩阵

答案2

您可以使用 TikZ 来注释矩阵。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\[
M_{reg} = \bordermatrix{~  & 0 & 1 & 2 & 3 & \tikz[remember picture]\node[inner sep=0pt] (a) {4}; & \cr
                  0 & 0 & 0 & 0 & 1 & 1 \cr
                  1 & 0 & 0 & 1 & 1 & 1 \cr
                  2 & 0 & 0 & 1 & 1 & 0 \cr
                  3 & 0 & 0 & 1 & 1 & 0 \cr
                  \tikz[remember picture]\node[inner sep=0pt] (b) {4}; & 0 & 0 & 0 & 0 & 0 \cr
                  }
\]
  \begin{tikzpicture}[overlay, remember picture]
    \draw[->] (a.east) ++(2mm,0) -- node[above] {DAG} ++(1,0);
    \draw[->] (b.south) ++(0,-2mm) -- node[right] {$Ca^{2+}$} ++(0,-1);
  \end{tikzpicture}
\end{document}

结果:

TikZ 注释矩阵

最后一列和右括号之间有一个额外的空格,因为&第一行有一个额外的空格。我把它留在我的代码中,因为我认为你可能有这样做的理由。如果没有,你可以直接删除它,间距就会正确。

答案3

使用{NiceArray}nicematrixTikz 绘制箭头。

\documentclass{article}
\usepackage{nicematrix,tikz}

\begin{document}

$\begin{NiceArray}{ccccccc}
&   & \Block{1-*}{\text{\small DAG}}\\
\rule{0pt}{12pt} &   & 0 & 1 & 2 & 3 & 4 \\
\Block{*-1}{\text{Ca}^{2+}}
& 0 & 0 & 0 & 0 & 1 & 1 \\
& 1 & 0 & 0 & 1 & 1 & 1 \\
& 2 & 0 & 0 & 1 & 1 & 0 \\
& 3 & 0 & 0 & 1 & 1 & 0 \\
& 4 & 0 & 0 & 0 & 0 & 0 \\
\CodeAfter 
  \SubMatrix({3-3}{7-7})
  \tikz \draw [->] (2-|3) -- ([xshift=1mm]2-|last) ;
  \tikz \draw [->] (3-|2) -- ([yshift=1mm]last-|2) ;
\end{NiceArray}$

\end{document}

您需要多次编译(因为 PGF/Tikz 节点)。

上述代码的输出

相关内容