
Ich verwende TikZ, um einen Branch-and-Bound-Baum zu zeichnen, und brauche etwas Hilfe.
Hier ist mein Code:
\documentclass[
12pt,
oneside,
a4paper,
english,
french,
spanish,
brazil
]{abntex2}
\usepackage{graphicx}
\usepackage{float}
\usepackage{tikz}
\usetikzlibrary{calc, shapes}
\begin{document}
\begin{figure}[H]
\centering
\tikzset{thick,
tree node/.style = {align=center, inner sep=0pt, font = \scriptsize},
every label/.append style = {font=\scriptsize},
S/.style = {draw, circle, minimum size = 20mm, inner sep=0pt,
top color=white, bottom color=blue!20},
ENL/.style = {% edge node left
font=\footnotesize, left=1pt},
ENR/.style = {% edge node right
font=\footnotesize, right=1pt},
grow = down,
sibling distance = 2.8cm,
level distance = 3cm
}
\begin{tikzpicture}
\node [S, label= 2:Some text here] {$PL0$}
child{node [S] {$PL1$}
child{node [S] {$PL3$}
edge from parent node[ENL] {$x2 \leq 2$}}
child{node [S] {$PL4$}
child{node [S] {$PL5$}
child{node [S] {$PL7$}
edge from parent node[ENL] {$x2 \leq 3$}}
child{node [S, label = 2:More text here] {$PL8$}
edge from parent node[ENR] {$x2 \geq 4$}}
edge from parent node[ENL] {$x1 \leq 3$}}
child{node [S, label = 2:Another text here] {$PL6$}
edge from parent node[ENR] {$x1 \geq 4$}}
edge from parent node[ENR] {$x2 \geq 3$}}
edge from parent node[ENL] {$x1 \leq 4$}}
child{node [S, label = 2:Last text here] {$PL2$}
edge from parent node[ENR] {$x1 \geq 5$}};
\end{tikzpicture}
\caption{My Figure.}
\end{figure}
\end{document}
Als Ergebnis sollten Sie diese Zahl erhalten:
Also, ich brauche hier bei zwei Dingen Hilfe:
Auch wenn ich den
\centering
Befehl verwende, ist die Figur nicht zentriert. Was übersehe ich hier?Ich muss in diese Kreise noch weitere Informationen schreiben. Im ersten Kreis (PL0) sollten beispielsweise diese zusätzlichen Informationen stehen:
Ich habe vieles probiert, konnte die Informationen aber nicht in den Kreis einpassen.
Antwort1
- Die FigurIstzentriert. Um dies zu überprüfen, habe ich Rahmen um den Textbereich und das hinzugefügt
tikzpicture
. - Wenn Sie mehr Inhalt in den Kreisen haben möchten, müssen Sie ihn zum Knoteninhalt hinzufügen. Wenn Sie mehrzeilige Texte zulassen möchten, müssen Sie einen entsprechenden Ausrichtungsschlüssel (oder
text width
) wie hinzufügenalign=center
.
\documentclass[
12pt,
oneside,
a4paper,
english,
french,
spanish,
brazil
]{abntex2}
\usepackage[showframe]{geometry}
\usepackage{float}
\usepackage{tikz}
\usetikzlibrary{calc, shapes}
\begin{document}
\begin{figure}[H]
\centering
\tikzset{thick,
tree node/.style = {align=center, inner sep=0pt, font = \scriptsize},
every label/.append style = {font=\scriptsize},
S/.style = {draw, circle, minimum size = 20mm, inner sep=0pt,
top color=white, bottom color=blue!20,
align=center}, %<-
ENL/.style = {% edge node left
font=\footnotesize, left=1pt},
ENR/.style = {% edge node right
font=\footnotesize, right=1pt},
grow = down,
sibling distance = 2.8cm,
level distance = 3cm
}
\begin{tikzpicture}
\node [S, label= 2:Some text here] {$PL0$}
child{node [S] {$PL0$\\ $x_1 = 4,333$ e\\ $x_2 = 2$ \\ $f = 42$}
child{node [S] {$PL3$}
edge from parent node[ENL] {$x2 \leq 2$}}
child{node [S] {$PL4$}
child{node [S] {$PL5$}
child{node [S] {$PL7$}
edge from parent node[ENL] {$x2 \leq 3$}}
child{node [S, label = 2:More text here] {$PL8$}
edge from parent node[ENR] {$x2 \geq 4$}}
edge from parent node[ENL] {$x1 \leq 3$}}
child{node [S, label = 2:Another text here] {$PL6$}
edge from parent node[ENR] {$x1 \geq 4$}}
edge from parent node[ENR] {$x2 \geq 3$}}
edge from parent node[ENL] {$x1 \leq 4$}}
child{node [S, label = 2:Last text here] {$PL2$}
edge from parent node[ENR] {$x1 \geq 5$}};
\draw (current bounding box.south west) rectangle (current bounding box.north east);
\end{tikzpicture}
\caption{My Figure.}
\end{figure}
\end{document}
Ich empfehle auch, einen Blick auf die forest
Verpackung zu werfen.