Ich konvertiere ein Diagramm, das ich zuvor erstellt habe, in tikz
ein 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:
Und unten ist die gewünschte Ausgabe, von der ich konvertiere:
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 below
ausrichten “. Und das ist, was Tinorth
south
kZ 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 arrows
und zu vermeiden \tikzstyle
. Beachten Sie, dass dies text centered
keinen Sinn ergibt, wenn Sie align=center
und haben, das minimum width=3cm
nichts bewirkt, da text width
immer größer ist.
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}
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}