Los nodos tikz están desplazados hacia la derecha.

Los nodos tikz están desplazados hacia la derecha.

Estoy convirtiendo un diagrama que hice anteriormente tikzusando nodos y positioning. Definí todos los nodos relativamente (por ejemplo right = of <other node>), pero por alguna razón las dos últimas filas de nodos están desplazadas hacia la derecha. Mi sospecha es que configuré relativamente las ubicaciones de los nodos incorrectos, pero no estoy seguro de qué solucionaría el problema.

A continuación se muestra mi base de código actual:

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage[margin=1in]{geometry}

\usetikzlibrary{shapes.geometric, arrows, positioning}
\tikzstyle{red-rounded-rectangle} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=red!30, align=center]
\tikzstyle{green-rounded-rectangle} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=green!30, align=center]
\tikzstyle{blue-rounded-rectangle} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=blue!30, align=center]

\begin{document}

\begin{figure}[h]
\centering
\begin{tikzpicture}[node distance=0.5cm]
\node (scotus) [green-rounded-rectangle, text width = 10cm]{
{\Huge \textbf{The Supreme Court}}
};
\node (state) [green-rounded-rectangle, right = of scotus, text width=4cm]{
{\large \textbf{State Supreme Court}}\\
Highest Law of the State
};
\node (12-appeals) [red-rounded-rectangle, below = of scotus,, text width = 4cm]{
{\large \textbf{12 Federal Courts of Appeals}}\\
Hears Appeals from lower courts. Geographically distributed.
};
\node (94-district) [blue-rounded-rectangle, below = of 12-appeals,, text width=4cm]{
{\large \textbf{94 District Courts}}\\
Hears cases and deals verdicts. \textit{Judge Judy} except federal.
};
\node (court-appeals) [red-rounded-rectangle, below = of scotus, right = of 12-appeals,, text width=4cm]{
{\large \textbf{Court of Appeals for the Federal Circuit}}\\
Hears special federal appeals. (e.g. patents)
};
\node (legis-courts) [blue-rounded-rectangle, below= of court-appeals, right = of 94-district, text width = 4cm]{
{\large \textbf{Legislative Courts}}\\
Weaker Courts created by Congress. (E.g. \textit{Court of Military Appeals})
};
\node (state-appeals) [red-rounded-rectangle, below  = of  state, right = of court-appeals, text width = 4cm]{
{\large \textbf{State Court of Appeals}}\\
Hears Appeals from Trials on a Case-By-Case basis.
};
\node (trial-court) [blue-rounded-rectangle, below = of state-appeals, right = of legis-courts, text width=4cm]{
{\large \textbf{Trial Court}}\\
Your typical \textit{Judge Judy} case. Hears either criminal or civil cases, and deals verdicts.
};
\end{tikzpicture}
\end{figure}

\end{document}

A continuación se muestra el resultado que obtengo: ingrese la descripción de la imagen aquí

Y a continuación se muestra el resultado deseado desde el que estoy convirtiendo: ingrese la descripción de la imagen aquí

NOTA: Las flechas de la imagen original son una característica que planeo agregar después de que se resuelva el desplazamiento.

Respuesta1

De forma predeterminada, belowsignifica "alinear mi northancla con el southancla de este otro nodo". Y eso es lo que TikZ lo hace. Pero desea que los nodos se desplacen hacia la izquierda, porque desea colocar dos debajo de uno. Creo que lo más fácil es colocar el nodo final de la segunda fila antes que los dos anteriores.

Por ejemplo,

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows.meta, positioning}
\tikzset{
  red-rounded-rectangle/.style={rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=red!30, align=center},
  green-rounded-rectangle/.style={rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=green!30, align=center},
  blue-rounded-rectangle/.style={rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=blue!30, align=center},
}
\begin{document}
\begin{tikzpicture}[node distance=0.5cm, >/.tip=Latex, thick]
  \node (scotus) [green-rounded-rectangle, text width = 10cm]{
    {\Huge \textbf{The Supreme Court}}
  };
  \node (state) [green-rounded-rectangle, right = of scotus, text width=4cm]{
    {\large \textbf{State Supreme Court}}\\
    Highest Law of the State
  };
  \node (state-appeals) [red-rounded-rectangle, below  = of  state, text width = 4cm]{
    {\large \textbf{State Court of Appeals}}\\
    Hears Appeals from Trials on a Case-By-Case basis.
  };
  \node (12-appeals) [red-rounded-rectangle, left=of state-appeals -| scotus, text width = 4cm] {
    {\large \textbf{12 Federal Courts of Appeals}}\\
    Hears Appeals from lower courts. Geographically distributed.
  };
  \node (94-district) [blue-rounded-rectangle, below = of 12-appeals,, text width=4cm]{
    {\large \textbf{94 District Courts}}\\
    Hears cases and deals verdicts. \textit{Judge Judy} except federal.
  };
  \node (court-appeals) [red-rounded-rectangle, right = of scotus |- state-appeals, text width=4cm]{
    {\large \textbf{Court of Appeals for the Federal Circuit}}\\
    Hears special federal appeals. (e.g. patents)
  };
  \node (legis-courts) [blue-rounded-rectangle, below= of court-appeals, text width = 4cm]{
    {\large \textbf{Legislative Courts}}\\
    Weaker Courts created by Congress. (E.g. \textit{Court of Military Appeals})
  };
  \node (trial-court) [blue-rounded-rectangle, below = of state-appeals,  text width=4cm]{
    {\large \textbf{Trial Court}}\\
    Your typical \textit{Judge Judy} case. Hears either criminal or civil cases, and deals verdicts.
  };
  \draw [->] (trial-court) edge (state-appeals) (state-appeals) edge (state) (state) edge (scotus) (legis-courts) edge (court-appeals) (court-appeals) edge (scotus.south -| court-appeals) (94-district) edge (12-appeals) (12-appeals) -- (12-appeals |- scotus.south) ;
\end{tikzpicture}
\end{document}  

También actualicé su código para evitar el uso obsoleto de arrowsy \tikzstyle. Tenga en cuenta que text centeredno tiene sentido si lo tiene align=centery eso minimum width=3cmno hace nada, ya que text widthsiempre es más grande.

tribunales alineados

Respuesta2

Aquí hay una respuesta ligeramente diferente que utiliza un nodo ficticio y se agregan algunas alturas mínimas para que las cajas se vean más uniformes.

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage[margin=1in]{geometry}

\usetikzlibrary{shapes.geometric, arrows, positioning}
\tikzset{red-rounded-rectangle/.style={rectangle, rounded corners, minimum
width=3cm, minimum height=2.2cm,text centered, draw=black, fill=red!30,
align=center,text width = 4.5cm},green-rounded-rectangle/.style={rectangle, rounded corners,
minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=green!30,
align=center,minimum height=1.5cm},blue-rounded-rectangle/.style = {rectangle, rounded corners,
minimum width=3cm, minimum height=2cm,text centered, draw=black, fill=blue!30,
align=center,text width = 4.5cm}}

\begin{document}

\begin{figure}[h]
\centering
\begin{tikzpicture}[node distance=0.5cm,font=\sf]
\node (scotus) [green-rounded-rectangle, text width = 10cm]{
{\Huge \textbf{The Supreme Court}}
};
\node (state) [green-rounded-rectangle, right = of scotus]{
{\large \textbf{State Supreme Court}}\\
Highest Law of the State
};
\node[below =1.5cm of scotus,xshift=0.4cm](dummy){};
\node (12-appeals) [red-rounded-rectangle,left=of dummy]{
{\large \textbf{12 Federal Courts of Appeals}}\\
Hears Appeals from lower courts. Geographically distributed.
};
\node (94-district) [blue-rounded-rectangle, below = of 12-appeals,]{
{\large \textbf{94 District Courts}}\\
Hears cases and deals verdicts. \textit{Judge Judy} except federal.
};
\node (court-appeals) [red-rounded-rectangle, below = of scotus, right = of 12-appeals]{
{\large \textbf{Court of Appeals for the Federal Circuit}}\\
Hears special federal appeals. (e.g. patents)
};
\node (legis-courts) [blue-rounded-rectangle, below= of court-appeals, right = of 94-district]{
{\large \textbf{Legislative Courts}}\\
Weaker Courts created by Congress. (E.g. \textit{Court of Military Appeals})
};
\node (state-appeals) [red-rounded-rectangle, below  = of  state, right = of court-appeals]{
{\large \textbf{State Court of Appeals}}\\
Hears Appeals from Trials on a Case-By-Case basis.
};
\node (trial-court) [blue-rounded-rectangle, below = of state-appeals, right = of legis-courts, text width=4.5cm]{
{\large \textbf{Trial Court}}\\
Your typical \textit{Judge Judy} case. Hears either criminal or civil cases, and deals verdicts.
};
\draw[thick,-latex] (trial-court)--(state-appeals);
\draw[thick,-latex] (legis-courts)--(court-appeals);
\draw[thick,-latex] (94-district)--(12-appeals);
\draw[thick,-latex] (state-appeals)--(state);
\draw[thick,-latex] (court-appeals)--(court-appeals|-scotus.south);
\draw[thick,-latex] (12-appeals)--(12-appeals|-scotus.south);
\draw[thick,-latex] (state)--(scotus);
\end{tikzpicture}
\end{figure}

\end{document}

ingrese la descripción de la imagen aquí

Respuesta3

algo similar a otra respuesta, sin embargo, el estilo de los nodos se determina de manera diferente y se calcula el ancho de "la corte suprema", porque la imagen se dibuja de abajo hacia arriba. en consecuencia los nodos no están fuera de lugar:

%\documentclass{article}
%\usepackage[utf8]{inputenc}
%\usepackage{tikz}
%\usepackage[margin=1in]{geometry}
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta, calc, positioning}

\begin{document}
%\begin{figure}[htb]
%\centering
    \begin{tikzpicture}[
node distance = 6mm and 4mm,
   box/.style = {rectangle, rounded corners, thick,
                 draw=#1!70!gray, fill=#1!30,
                 text width=4cm, minimum height=1cm, align=flush center,
                 font=\sffamily\linespread{.8}\selectfont}
                        ]
% first row, on the bottom
\node (94-district)     [box=blue]
   {\textbf{94 District Courts}\\
    \scriptsize
    Hears cases and deals verdicts. \textit{Judge Judy} except federal.};
\node (legis-courts)    [box=blue, right=of 94-district]
   {\textbf{Legislative Courts}\\
    \scriptsize
    Weaker Courts created by Congress. (E.g. \textit{Court of Military Appeals})};
\node (trial-court)     [box=blue, below right=0mm and 4mm of legis-courts.north east]
   {\textbf{Trial Court}\\
    \scriptsize
    Your typical \textit{Judge Judy} case. Hears either criminal or civil cases, and deals verdicts.};
% second row
\node (12-appeals)      [box=red, above=of 94-district]
   {\textbf{12 Federal Courts of Appeals}\\
    \scriptsize
    Hears Appeals from lower courts. Geographically distributed.};
\node (court-appeals)   [box=red, above=of legis-courts]
   {\textbf{Court of Appeals for the Federal Circuit}\\
    \scriptsize
    Hears special federal appeals. (e.g. patents)};
\node (state-appeals)   [box=red, above=of trial-court]
   {\textbf{State Court of\\ Appeals}\\
    \scriptsize
    Hears Appeals from Trials on a Case-By-Case basis.};
% third row
% firs calculate spreme court node width
\path   let \p1 = ($(12-appeals.west)-(court-appeals.east)$),
            \n1 = {veclen(\x1,\y1)} in
        node (scotus)
            [box=green, font=\sffamily\Huge\bfseries,
             text width=\n1-2*\pgfkeysvalueof{/pgf/inner xsep},
             above=of $(12-appeals.north)!0.5!(court-appeals.north)$]
            {The Supreme Court};
\node (state)       [box=green, right = of scotus]
   {\large\textbf{State Supreme Court}\\
    \scriptsize
    Highest Law of the State};
\draw [-Stealth, thick]
    (trial-court)   edge (state-appeals)
    (state-appeals) edge (state)
    (state)         edge (scotus)
    (legis-courts)  edge (court-appeals)
    (court-appeals) edge (scotus.south -| court-appeals)
    (94-district)   edge (12-appeals)
    (12-appeals)     to  (12-appeals |- scotus.south) ;

\end{tikzpicture}
%\end{figure}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada