使用 Tikz 绘制多个二进制数组

使用 Tikz 绘制多个二进制数组

我正在尝试使用 Tikz 绘制如下图所示的图像。但是,由于我是 Tikz 的初学者,因此很难完成此操作。任何帮助都非常感谢。谢谢

在此处输入图片描述

答案1

对于起点可以提供以下代码,它提供了您部分愿望:

\documentclass[tikz, border=3mm]{standalone}
\usetikzlibrary{arrows.meta,chains,matrix,decorations.pathreplacing}

\begin{document}
    \begin{tikzpicture}[
node distance=0pt,
 start chain = A going right,
arrow/.style = {draw=#1,-{Stealth[]}, 
                shorten >=1mm, shorten <=1mm}, % styles of arrows
arrow/.default = black,
    X/.style = {rectangle, draw,% styles of nodes in string (chain)
                minimum width=2ex, minimum height=3ex,
                outer sep=0pt, on chain},
    B/.style = {decorate,
                decoration={brace, amplitude=5pt,
                pre=moveto,pre length=1pt,post=moveto,post length=1pt,
                raise=1mm,
                            #1}, % for mirroring of brace, if necessary
                thick},
   B/.default = mirror, % by default braces are mirrored
                        ]
\foreach \i in {1,0,0,0,1,1,
                2,0,3,4,1,2}% <-- content of nodes
    \node[X] {\i};
\matrix (ML) [matrix of nodes,
              nodes=draw, dashed, row sep=1mm,
              row 1 column 1/.style={draw=red},
              left=11mm of A-1]
{   
    1\ 0\\
    0\ 0\\
    1\ 1\\
};
\draw   (ML.north -| ML-1-1.north west) -| 
        (ML.south west) --
        (ML.south -| ML-3-1.south west)
%        
        (ML.north -| ML-1-1.north east) -|
        (ML.south east) --
        (ML.south -| ML-3-1.south east)
        ;

\matrix (MR) [matrix of nodes,
              nodes=draw, dashed, row sep=1mm,
              row 1 column 1/.style={draw=red},
              right=11mm of A-12]
{   1\ 0\\
    0\ 0\\
    1\ 1\\
};
\draw   (MR.north -| MR-1-1.north west) -|
        (MR.south west) --
        (MR.south -| MR-3-1.south west)
%
        (MR.north -| MR-1-1.north east) -|
        (MR.south east) --
        (MR.south -| MR-3-1.south east)
        ;
\draw[B=,red]   (A-1.north west) -- coordinate[above=3mm] (a) (A-2.north east);
\draw[arrow] (ML-1-1.north) to [out=60, in=120] (a);
\draw[B]        (A-3.south west) -- coordinate[below=3mm] (b) (A-4.south east);
\draw[arrow] (ML-2-1.south) to [out=315, in=210] (b);
\draw[B]        (A-5.south west) -- coordinate[below=3mm] (c) (A-6.south east);
\draw[arrow] (ML-3-1.south) to [out=315, in=240] (c);


    \end{tikzpicture}
\end{document}

它的吸引力:

在此处输入图片描述

我认为缺少所需图像的一部分(主要部分由上述代码确定)是相对简单的添加。如果在此过程中您遇到问题,只需询问您卡在哪里即可。

相关内容