nicht ausgerichtete Tikz-Knoten

nicht ausgerichtete Tikz-Knoten

Ich versuche ein Bild mit folgendem Code:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc,shapes, positioning,intersections}

\begin{document}
\begin{tikzpicture}[node distance=-\pgflinewidth]

\coordinate (origin) at (0,0);
\coordinate (xEnd) at (0,4);
\coordinate (yEnd) at (10.5,0);

\tikzset{
  mybox/.style = {
     minimum height=#1, 
     minimum width=1.5cm, 
     inner sep=3pt, 
     rotate=90,
     draw},
  mybox/.default=10.5cm,
}

\draw[->,thick, name path=xaxis] (origin) -- node [above,rotate=90] {Processors} (xEnd);
\draw[->,thick, name path=yaxis] (origin) -- node [below] {Time} (yEnd);

\node (src) at (0.5,3) [mybox=0.4cm] {\large $src$};
\node (r0) [mybox=0.7cm,below=of src] {\large $radix_0$};
\node (r1) [mybox=0.7cm,below=of r0] {\large $radix_1$};
\node (r2) [mybox=0.7cm,below=of r1] {\large $radix_2$};
\node (r3) [mybox=0.7cm,below=of r2] {\large $radix_3$};
\node (r4) [mybox=0.7cm,below=of r3] {\large $radix_4$};
\node (r5) [mybox=0.7cm,below=of r4] {\large $radix_5$};

\node (r6)  [mybox=0.7cm,below=of r5,xshift=-2cm] {\large $radix_6$};
\node (r7)  [mybox=0.7cm,below=of r6] {\large $radix_7$};
\node (r8)  [mybox=0.7cm,below=of r7] {\large $radix_8$};
\node (r9)  [mybox=0.7cm,below=of r8] {\large $radix_9$};
\node (r10)  [mybox=0.7cm,below=of r9] {\large $radix_{10}$};
\node (op)  [mybox=0.4cm,below=of r10] {\large $output$};

\node (Bsrc) [mybox=0.4cm,below =of r5,fill=gray!50] {\large $src$};
\node (Br0) [mybox=0.7cm,below=of Bsrc,fill=gray!50] {\large $radix_0$};
\node (Br1) [mybox=0.7cm,below=of Br0,fill=gray!50] {\large $radix_1$};
\node (Br2) [mybox=0.7cm,below=of Br1,fill=gray!50] {\large $radix_2$};
\node (Br3) [mybox=0.7cm,below=of Br2,fill=gray!50] {\large $radix_3$};
\node (Br4) [mybox=0.7cm,below=of Br3,fill=gray!50] {\large $radix_4$};
\node (Br5) [mybox=0.7cm,below=of Br4,fill=gray!50] {\large $radix_5$};

\node (r6)  at (0.65,1) [mybox=0.7cm,fill=gray!80] {\large $radix_6$};
\node (r7)  [mybox=0.7cm,below=of r6,fill=gray!80] {\large $radix_7$};
\node (r8)  [mybox=0.7cm,below=of r7,fill=gray!80] {\large $radix_8$};
\node (r9)  [mybox=0.7cm,below=of r8,fill=gray!80] {\large $radix_9$};
\node (r10)  [mybox=0.7cm,below=of r9,fill=gray!80] {\large $radix_{10}$};
\node (op)  [mybox=0.4cm,below=of r10,fill=gray!80] {\large $output$};

\end{tikzpicture}
\end{document}

Und es erzeugt das folgende Bild. Jetzt sehe ich in diesem erzeugten Bild, dass die Ausrichtung falsch ist. Sie können sehen, dass die Knoten im Verhältnis zu ihren Nachbarn vertikal leicht verschoben sind. Wie behebe ich das?

Bildbeschreibung hier eingeben

Antwort1

Die Knoten werden um die Linienbreite (standardmäßig 0,4pt) verschoben. Wenn Sie den Knotenabstand oder die Linienbreite auf 0 setzen, wird die Verschiebung entfernt:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc,shapes, positioning,intersections}

\begin{document}
\begin{tikzpicture}[node distance=0pt]

\coordinate (origin) at (0,0);
\coordinate (xEnd) at (0,4);
\coordinate (yEnd) at (10.5,0);

\tikzset{
  mybox/.style = {
     minimum height=#1, 
     minimum width=1.5cm, 
     inner sep=3pt, 
     rotate=90,
     line width=1pt,
     draw},
  mybox/.default=10.5cm,
}

\draw[->,thick, name path=xaxis] (origin) -- node [above,rotate=90] {Processors} (xEnd);
\draw[->,thick, name path=yaxis] (origin) -- node [below] {Time} (yEnd);

\node (src) at (0.5,3) [mybox=0.4cm] {\large $src$};
\node (r0) [mybox=0.7cm,below=of src.south] {\large $radix_0$};
\node (r1) [mybox=0.7cm,below=of r0] {\large $radix_1$};
\node (r2) [mybox=0.7cm,below=of r1] {\large $radix_2$};
\node (r3) [mybox=0.7cm,below=of r2] {\large $radix_3$};
\node (r4) [mybox=0.7cm,below=of r3] {\large $radix_4$};
\node (r5) [mybox=0.7cm,below=of r4] {\large $radix_5$};

\node (r6)  [mybox=0.7cm,below=of r5,xshift=-2cm] {\large $radix_6$};
\node (r7)  [mybox=0.7cm,below=of r6] {\large $radix_7$};
\node (r8)  [mybox=0.7cm,below=of r7] {\large $radix_8$};
\node (r9)  [mybox=0.7cm,below=of r8] {\large $radix_9$};
\node (r10)  [mybox=0.7cm,below=of r9] {\large $radix_{10}$};
\node (op)  [mybox=0.4cm,below=of r10] {\large $output$};

\node (Bsrc) [mybox=0.4cm,below =of r5,fill=gray!50] {\large $src$};
\node (Br0) [mybox=0.7cm,below=of Bsrc,fill=gray!50] {\large $radix_0$};
\node (Br1) [mybox=0.7cm,below=of Br0,fill=gray!50] {\large $radix_1$};
\node (Br2) [mybox=0.7cm,below=of Br1,fill=gray!50] {\large $radix_2$};
\node (Br3) [mybox=0.7cm,below=of Br2,fill=gray!50] {\large $radix_3$};
\node (Br4) [mybox=0.7cm,below=of Br3,fill=gray!50] {\large $radix_4$};
\node (Br5) [mybox=0.7cm,below=of Br4,fill=gray!50] {\large $radix_5$};

\node (r6)  at (0.65,1) [mybox=0.7cm,fill=gray!80] {\large $radix_6$};
\node (r7)  [mybox=0.7cm,below=of r6,fill=gray!80] {\large $radix_7$};
\node (r8)  [mybox=0.7cm,below=of r7,fill=gray!80] {\large $radix_8$};
\node (r9)  [mybox=0.7cm,below=of r8,fill=gray!80] {\large $radix_9$};
\node (r10)  [mybox=0.7cm,below=of r9,fill=gray!80] {\large $radix_{10}$};
\node (op)  [mybox=0.4cm,below=of r10,fill=gray!80] {\large $output$};

\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Eine PSTricks-Lösung:

\documentclass{article}

\usepackage{amsmath}
\usepackage{multido,pstricks}

\begin{document}

\begin{pspicture}(-0.55,-0.55)(13.7,5.2)
\psset{dimen = m}
\large
  \psline{->}(0,0)(13.7,0)
  \psline{->}(0,0)(0,5.2)
  \rput(6.85,-0.4){Time}
  \rput(-0.4,2.6){\rotateleft{Processors}}
  \psframe[fillstyle = solid, fillcolor = gray](5.3,0.3)(6.3,2.3)
  \rput(5.8,1.3){\rotateleft{output}}
  \psframe(12.3,0.3)(13.3,2.3)
  \rput(12.8,1.3){\rotateleft{output}}
  \psframe(0.3,2.8)(1.3,4.8)
  \rput(0.8,3.8){\rotateleft{src}}
  \psframe[fillstyle = solid, fillcolor = gray](6.3,2.8)(7.3,4.8)
  \rput(6.8,3.8){\rotateleft{src}}
  \psframe[fillstyle = solid, fillcolor = gray](7.3,2.8)(8.3,4.8)
  \rput(7.8,3.8){\rotateleft{$\text{radix}_{0}$}}
  \multido{
    \rA = 0.3+1,
    \rB = 7.3+1,
    \rC = 8.3+1,
    \rD = 1.3+1,
    \iB = 1+1,
    \iA = 6+1
  }{5}{
    \psframe[fillstyle = solid, fillcolor = gray](\rA,0.3)(!\rA\space 1 add 2.3)
    \rput(!\rA\space 0.5 add 1.3){\rotateleft{$\text{radix}_{\iA}$}}
    \psframe(\rB,0.3)(!\rB\space 1 add 2.3)
    \rput(!\rB\space 0.5 add 1.3){\rotateleft{$\text{radix}_{\iA}$}}
    \psframe[fillstyle = solid, fillcolor = gray](\rC,2.8)(!\rC\space 1 add 4.8)
    \rput(!\rC\space 0.5 add 3.8){\rotateleft{$\text{radix}_{\iB}$}}
    \psframe(\rD,2.8)(!\rD\space 1 add 4.8)
    \rput(!\rD\space 0.5 add 3.8){\rotateleft{$\text{radix}_{\iB}$}}
  }
\end{pspicture}

\end{document}

Ausgabe

Antwort3

Eine Variation der dcmst-Antwort, aber mit etwas kompakterem Code:

\documentclass[12pt,tikz,border=3mm]{standalone}
\usetikzlibrary{calc,chains,shapes,positioning,intersections}
\begin{document}
    \begin{tikzpicture}[
    node distance=3mm and 0mm,
    start chain = going right,
mybox/.style = {
     minimum height=19mm,
     minimum width=7mm,
     inner sep=3pt, outer sep=0pt,
     font=\large,
     line width=1pt,
     draw,
     on chain,
     node contents={\rotatebox{90}{#1}},
     },
                        ]
\coordinate (origin) at (0,0);
\coordinate (xEnd) at (0,5);
\coordinate (yEnd) at (10.5,0);

\draw[->,thick,name path=xaxis] (origin) -- node [above,rotate=90] {Processors} (xEnd);
\draw[->,thick,name path=yaxis] (origin) -- node [below] {Time} (yEnd);

% first row
\node (src) at (0.5,3.3) [mybox=$src$];
\foreach \i in {0,1,...,5}
    \node [mybox=$radix_{\i}$];

\node [mybox=$src$,fill=gray!80];
    \foreach \i in {0,1,...,5}\node [mybox=$radix_{\i}$,fill=gray!80];

% second row
\node (r6) [mybox=$radix_{6}$,fill=gray!80,
            below right=of src.south west];
\foreach \i in {7,8,9,10}
    \node [mybox=$radix_{\i}$,fill=gray!80];
\node   [mybox=$output$,fill=gray!80];

\node [mybox=$radix_6$,right=7mm];
\foreach \i in {7,8,9,10}
    \node [mybox=$radix_{\i}$];
\node   [mybox=$output$,fill=gray!80];
    \end{tikzpicture}
\end{document}

Oben nutze ich die chainsBibliothek und node contents. Das Ergebnis ist das gleiche wie das von Svend Tveskeag bereitgestellte

verwandte Informationen