Hallo,
ich würde gerne einen Szenariobaum in mein Latex Dokument einfügen, der einen Clusteralgorithmus darstellt, also erst einfach nur eine Aneinanderreihung von Scenarios darstellt, die dann im Anschluss zusammengefasst werden. Das soll ungefähr so aussehen, wie Figure 3 in http://www.scs-europe.net/conf/ecms2007 ... s_0078.pdf. Ich nutze für Szenariobäume bis jetzt immer das Paket tikzpicture, aber ich bekomme es nicht hin, Kanten einzufügen, die nicht vom parent node kommen und außerdem würde ich gerne Kästchen machen, die über mehrere Knoten einer Stufe gehen.
Vielen Dank.
Broki
Cluster im Szenariobaum darstellen Thema ist als GELÖST markiert
- Stefan Kottwitz
- Admin
- Beiträge: 2759
- Registriert: Di 8. Jul 2008, 00:39
- Kontaktdaten:
Antwort
Hey Stefan,
danke für deine schnelle Antwort, hier ein Minimalbeispiel:
Jetzt hätte ich gerne Folgendes:
- Jeweils ein Kästchen um die Knoten (1,2,3), (4,5,6), (7,8), (9), (10), (11,12)
- Jeweils eine nicht gestrichelte Line, die folgende Kästchen verbindet, am besten mittig ins jeweilige Kästchen:
(1,2,3) mit (7,8)
(1,2,3) mit (9)
(4,5,6) mit (10)
(4,5,6) mit (11,12)
Klingt kompliziert, oder? :D Glaubst du, das ist möglich?
Danke für deine Hilfe
Broki
danke für deine schnelle Antwort, hier ein Minimalbeispiel:
\documentclass{article} \usepackage[latin1]{inputenc} \usepackage{tikz} \usetikzlibrary{trees, arrows} \begin{document} \begin{figure} \center % Set the overall layout of the tree \tikzstyle{level 1}=[level distance=3.5cm, sibling distance=3.5cm] \tikzstyle{level 2}=[level distance=3.5cm, sibling distance=1.0cm] % Define styles for bags and leafs \tikzstyle{bag} = [circle,draw,solid] \tikzstyle{end} = [circle,draw,solid] % The sloped option gives rotated edge labels. Personally % I find sloped labels a bit difficult to read. Remove the sloped options % to get horizontal labels. \begin{tikzpicture}[grow=right, sloped] \node[bag] {$0$} child { node[bag] {$6$} child { node[bag]{$12$} edge from parent node[above] {} node[below] {} } edge from parent[dashed] node[above] {} node[below] {} } child { node[bag] {$5$} child { node[bag]{$11$} edge from parent[dashed] node[above] {} node[below] {} } edge from parent node[above] {} node[below] {} } child { node[bag] {$4$} child { node[bag]{$10$} edge from parent node[above] {} node[below] {} } edge from parent[dashed] node[above] {} node[below] {} } child { node[bag] {$3$} child { node[bag]{$9$} edge from parent node[above] {} node[below] {} } edge from parent[dashed] node[above] {} node[below] {} } child { node[bag] {$2$} child { node[bag]{$8$} edge from parent[dashed] node[above] {} node[below] {} } edge from parent node[above] {} node[below] {} } child { node[bag] {$1$} child { node[bag]{$7$} edge from parent node[above] {} node[below] {} } edge from parent[dashed] node[above] {} node[below] {} }; \end{tikzpicture} \end{figure} \end{document}
- Jeweils ein Kästchen um die Knoten (1,2,3), (4,5,6), (7,8), (9), (10), (11,12)
- Jeweils eine nicht gestrichelte Line, die folgende Kästchen verbindet, am besten mittig ins jeweilige Kästchen:
(1,2,3) mit (7,8)
(1,2,3) mit (9)
(4,5,6) mit (10)
(4,5,6) mit (11,12)
Klingt kompliziert, oder? :D Glaubst du, das ist möglich?
Danke für deine Hilfe
Broki
- Stefan Kottwitz
- Admin
- Beiträge: 2759
- Registriert: Di 8. Jul 2008, 00:39
- Kontaktdaten:
Sobald man den Nodes Namen gibt, oder wenigstens teilweise bzw. der Wurzel und die implizite Benennung verwendet, sollte man frei Linien zeichnen können. Kästchen kann man dann mit der fit-Bibliothek hinzufügen.
Ich hänge hier schonmal das Bild zu Deinem obigem Code rein, als Komfort für die Leser. Bin noch etwas beschäftigt.

Stefan
Ich hänge hier schonmal das Bild zu Deinem obigem Code rein, als Komfort für die Leser. Bin noch etwas beschäftigt.

Stefan
- Dateianhänge
-
- baum.png (16.94 KiB) 2138 mal betrachtet
- Stefan Kottwitz
- Admin
- Beiträge: 2759
- Registriert: Di 8. Jul 2008, 00:39
- Kontaktdaten:
Hier mal ein Vorschlag.

Stefan
- Alle Knoten benannt wie ihren Inhalt zur leichteren Referenzierung
- Mit fit = ... (fit library) die Kästen drum gezeichnet, als neue nodes (Stil box), und mit x-y-z benannt je nach verbundenen Nodes
- Stile mal als lokale Optionen für das Bild angegeben, da sie eh in der figure-Umgebung standen; sollten sie global sein, würde ich das mit \tikzset{...} machen
- Kästen-Knoten wie normale Nodes durch Linien verbunden
- minimum width für bag und end sorgen für gleiche Größe, egal ob 1 oder 10 drin steht
- \centering statt center
- aus Spaß mal mit Farbe gefüllt
- den background layer verwendet mit library backgrounds, damit unterhalb der Knoten der später erzeugte Kasten gefüllt wird, also ohne den Knoten zu überschreiben
\documentclass{article} \usepackage[latin1]{inputenc} \usepackage{tikz} \usetikzlibrary{trees, arrows, fit, backgrounds} \begin{document} \begin{figure} \centering \begin{tikzpicture}[grow=right, sloped, level 1/.style = { level distance=3.5cm, sibling distance=3.5cm }, level 2/.style = { level distance=3.5cm, sibling distance=1.0cm }, bag/.style = { circle, draw, solid, minimum width=5ex, fill=blue!20 }, end/.style = { circle, draw, solid, minimum width=5ex }, box/.style = { draw, rectangle, rounded corners, inner sep=1.5ex, fill=red!10} ] \node[bag] (0) {$0$} child { node[bag] (6) {$6$} child { node[bag] (12) {$12$} edge from parent node[above] {} node[below] {} } edge from parent[dashed] node[above] {} node[below] {} } child { node[bag] (5) {$5$} child { node[bag] (11) {$11$} edge from parent[dashed] node[above] {} node[below] {} } edge from parent node[above] {} node[below] {} } child { node[bag] (4) {$4$} child { node[bag] (10) {$10$} edge from parent node[above] {} node[below] {} } edge from parent[dashed] node[above] {} node[below] {} } child { node[bag] (3) {$3$} child { node[bag] (9) {$9$} edge from parent node[above] {} node[below] {} } edge from parent[dashed] node[above] {} node[below] {} } child { node[bag] (2) {$2$} child { node[bag] (8) {$8$} edge from parent[dashed] node[above] {} node[below] {} } edge from parent node[above] {} node[below] {} } child { node[bag] (1) {$1$} child { node[bag] (7) {$7$} edge from parent node[above] {} node[below] {} } edge from parent[dashed] node[above] {} node[below] {} }; \begin{scope}[on background layer] \node (1-2-3) [box, fit = (1) (2) (3)] {}; \node (4-5-6) [box, fit = (4) (5) (6)] {}; \node (7-8) [box, fit = (7) (8) ] {}; \node (9-9) [box, fit = (9)] {}; \node (10-10) [box, fit = (10)] {}; \node (11-12) [box, fit = (11) (12)] {}; \end{scope} \draw (7-8) -- (1-2-3) -- (9-9) (11-12) -- (4-5-6) -- (10-10); \end{tikzpicture} \end{figure} \end{document}

Stefan
- Dateianhänge
-
- tikz-baum.png (23.1 KiB) 2154 mal betrachtet