Tikz-Knoten sind nach rechts versetzt

Tikz-Knoten sind nach rechts versetzt

Ich konvertiere ein Diagramm, das ich zuvor erstellt habe, in tikzein Diagramm mit Knoten und positioning. Ich habe alle Knoten relativ definiert (z. B. right = of <other node>), aber aus irgendeinem Grund sind die letzten beiden Knotenreihen nach rechts versetzt. Ich vermute, dass ich die Positionen der falschen Knoten relativ festgelegt habe, bin mir aber nicht sicher, wie ich das beheben könnte.

Unten ist meine aktuelle Codebasis:

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

Unten ist die Ausgabe, die ich erhalte: Bildbeschreibung hier eingeben

Und unten ist die gewünschte Ausgabe, von der ich konvertiere: Bildbeschreibung hier eingeben

HINWEIS: Die Pfeile aus dem Originalbild sind eine Funktion, die ich hinzufügen möchte, nachdem der Versatz behoben ist.

Antwort1

Standardmäßig bedeutet „meinen Anker mit dem Anker dieses anderen Knotens belowausrichten “. Und das ist, was TinorthsouthkZ tut das. Aber Sie möchten, dass die Knoten nach links verschoben werden, weil Sie zwei unter einen bringen möchten. Am einfachsten ist es, den letzten Knoten der zweiten Reihe vor die beiden vorherigen zu setzen, denke ich.

Zum Beispiel,

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

Ich habe Ihren Code außerdem aktualisiert, um die veraltete Verwendung von arrowsund zu vermeiden \tikzstyle. Beachten Sie, dass dies text centeredkeinen Sinn ergibt, wenn Sie align=centerund haben, das minimum width=3cmnichts bewirkt, da text widthimmer größer ist.

ausgerichtete Gerichte

Antwort2

Hier ist eine leicht andere Antwort mit einem Dummy-Knoten und einigen hinzugefügten Mindesthöhen, damit die Boxen einheitlicher aussehen.

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

Bildbeschreibung hier eingeben

Antwort3

in gewisser Weise ähnlich wie die andere Antwort, jedoch wird der Knotenstil anders bestimmt und die Breite des „Obersten Gerichtshofs“ wird berechnet, da das Bild von unten nach oben gezeichnet wird. Folglich werden die Knoten nicht falsch platziert:

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

Bildbeschreibung hier eingeben

verwandte Informationen