nodos tikz no alineados

nodos tikz no alineados

Estoy probando una imagen con el siguiente código:

\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}

Y produce la siguiente imagen. Ahora, en esta imagen producida, veo que la alineación es incorrecta. Puede ver que los nodos se desplazan un poco verticalmente con respecto a sus vecinos. ¿Cómo puedo solucionar esto?

ingrese la descripción de la imagen aquí

Respuesta1

Los nodos se desplazan según el ancho de la línea (0,4 puntos por defecto). Establecer la distancia del nodo o el ancho de la línea en 0 elimina el cambio:

\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}

ingrese la descripción de la imagen aquí

Respuesta2

Una solución de PSTricks:

\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}

producción

Respuesta3

Una variación de la respuesta dcmst, pero con un código un poco más compacto:

\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}

Arriba exploto la chainsbiblioteca y node contents. El resultado es el mismo que proporciona Svend Tveskeag.

información relacionada