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}

その魅力:

ここに画像の説明を入力してください

必要な画像の欠落部分 (主要部分は上記のコードで決定されます) は、比較的簡単に追加できると思います。これに問題がある場合は、どこで行き詰まったかを尋ねてください。

関連情報