无法使用 TikZ 重现序列比对?

无法使用 TikZ 重现序列比对?

我是使用 TikZ 包的新手。

有人可以帮我重现这个矩阵吗1使用 Tikz?

两个序列之间的比对

更准确地说,图中的步骤2

步

我尝试使用矩阵来做到这一点,但我无法将数字 1 [左上方] 放入节点 (m-3-3) = +1

\begin{tikzpicture}
    \matrix (m) [matrix of math nodes,
            nodes in empty cells,nodes={minimum width=7ex,
            minimum height=7ex,outer sep=0pt},
            column sep=1ex,row sep=-2ex]{
                & t & \mathcal{E}   & A & G & C \\
        s   &   &  0            & 1 & 2 & 3 \\
 \mathcal{E}    & 0 &  0                &-2 &-4     &-6     \\
              A & 1 & -2                    &+1     &-1     &-3 \\
              A & 2 & -4                    &-1 & 0     &-2     \\
              A & 3 & -6                    &-3 &-2     &-1     \\
              C & 4 & -8                    &-5 &-4     & 1     \\};

         \draw[<-] (m-2-1) -- (m-3-1);
\end{tikzpicture}

答案1

您可以将节点放置在矩阵元素之间的路径上

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{matrix,calc}
\begin{document}

\begin{tikzpicture}
    \matrix (m) [matrix of math nodes,
            nodes in empty cells,nodes={outer sep=0pt},
            column sep=7ex,row sep=7ex]{
                & t & \mathcal{E}   & A & G & C \\
        s   &   &  0            & 1 & 2 & 3 \\
 \mathcal{E}    & 0 &  0                &-2 &-4     &-6     \\
              A & 1 & -2                    &+1     &-1     &-3 \\
              A & 2 & -4                    &-1 & 0     &-2     \\
              A & 3 & -6                    &-3 &-2     &-1     \\
              C & 4 & -8                    &-5 &-4     & 1     \\};
\draw ([yshift= 1cm]$(m-1-2)!0.5!(m-1-3)$) -- ([yshift=-1cm]$(m-7-2)!0.5!(m-7-3)$)
      ([xshift=-1cm]$(m-2-1)!0.5!(m-3-1)$) -- ([xshift= 1cm]$(m-2-6)!0.5!(m-3-6)$);

\draw[->,shorten <=3mm] (m-4-4) -- (m-3-3) node[above,pos=.05] {$\scriptstyle 1$};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

由于上标似乎附加在节点上而不是边缘上,因此我建议采用与@percusse 不同的解决方案。

首先,由于上标似乎是单元格内容的一部分,因此一种解决方案是将上标放在单元格中,例如{}^{1}-1。然而,这给上标的放置提供了很小的灵活性。

相反,我们可以在构建矩阵之后添加上标,但是通过使用单元格,inner sep我们可以添加托管上标所需的填充,然后使用锚点将上标相对于单元格的西北角定位(借用一些 percusse 的代码):

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix,calc}

\begin{document}
\begin{tikzpicture}
    \matrix (m) [matrix of math nodes,
            nodes in empty cells,nodes={outer sep=0pt, inner ysep=2ex},
            column sep=7ex,row sep=7ex]{
                & t & \mathcal{E}   & A & G & C \\
        s   &   &  0            & 1 & 2 & 3 \\
 \mathcal{E}    & 0 &  0                &-2 &-4     &-6     \\
              A & 1 & -2                    &+1     &-1     &-3 \\
              A & 2 & -4                    &-1 & 0     &-2     \\
              A & 3 & -6                    &-3 &{}^{-1}-2     &-1     \\
              C & 4 & -8                    &-5 &-4     & 1     \\};

         % \draw[<-] (m-2-1) -- (m-3-1);
\draw ([yshift= 1cm]$(m-1-2)!0.5!(m-1-3)$) -- ([yshift=-1cm]$(m-7-2)!0.5!(m-7-3)$)
      ([xshift=-1cm]$(m-2-1)!0.5!(m-3-1)$) -- ([xshift= 1cm]$(m-2-6)!0.5!(m-3-6)$);
         \node[outer sep=2pt,inner sep=0pt, anchor=north west] (m-4-4l) at (m-4-4.north west) {$\scriptstyle 1$};

         \draw[->,shorten >=3pt,shorten <=3pt] (m-4-4) -- (m-3-3);

\end{tikzpicture}
\end{document}

通过此设置,outer sep上标的 控制上标与单元格内边框的距离。inner sep单元格的 控制上标与单元格内容的距离。

定位

最终结果是

结果

相关内容