
Ich versuche, mit TikZ ein Wortnetz wie dieses zu zeichnen
aber ich weiß wirklich nicht, womit ich anfangen soll. Kann mir jemand helfen, dieses Diagramm zu zeichnen? Leider habe ich nicht genug Zeit, Bücher über TikZ zu lesen. Das ist Teil meiner Hausaufgabe für heute :(
Antwort1
Eine Möglichkeit mit dem leistungsstarkenforest
Paket:
\documentclass{article}
\usepackage{forest}
\begin{document}
\begin{forest}
[entity
[inanimate-object
[natural-object
[geological-formation
[natural-elevation [hill], tikz={
\foreach \nodenam/\nodelabel in {!ul/0.000113,!u/0.000189}
\node[anchor=east,xshift=-10pt] at (\nodenam.west) {$\nodelabel$};
}
]
[shore [coast], tikz={
\foreach \nodename/\nodelabel in {!ul/0.0000216,!u/0.0000836,!uu/0.00176,!uuu/0.0163,!uuuu/0.167,!ur/0.365}
\node[anchor=west,xshift=10pt] at (\nodename.east) {$\nodelabel$};
}
]
]
]
]
]
\end{forest}
\end{document}
Antwort2
Eine baumbasierte Lösung
Eine mögliche Lösung hierfür ist die Verwendung von \usetikzlibrary{positioning}
in Kombination mit qtree
und tikz-qtree
. Mit den beiden letzteren können Sie Baumstrukturen wie den gewünschten Baum zeichnen und die positioning
Bibliothek ermöglicht es Ihnen, Knoten in Bezug auf andere Knoten zu definieren, um die Zahlen relativ zu den Wörtern zu platzieren.
Hier ist ein MWE für eine solche Lösung:
\documentclass{article}
\usepackage{qtree}
\usepackage{tikz}
\usepackage{tikz-qtree,tikz-qtree-compat}
\tikzset{every tree node/.style={align=center, anchor=north}}
\usetikzlibrary{positioning}
\usepackage{fixltx2e}
\begin{document}
\begin{tikzpicture}[baseline]
\Tree
[.\node(entity){entity};
[.\node(inanimate){inanimate object};
[.\node(natural){natural object};
[.\node(geological){geological formation};
[.\node(naturalelev){natural elevation};
[.\node(hill){hill}; ]
]
[.\node(shore){shore};
[.\node(coast){coast}; ]
] ] ] ] ]
\node [base right=2cm of entity] (1) {0.395} ;
\node [base left=2.5cm of entity] (align) {};
\node [below=0.6cm of 1] (2) {0.167};
\node [below=0.6cm of 2] (3) {0.0163};
\node [below=0.55cm of 3] (4) {0.00176};
\node [below=0.6cm of 4] (5) {0.0000836};
\node [below=0.5cm of 5] (6) {0.0000216};
\node [below=3.8cm of align] (7) {0.000113};
\node [below=.5cm of 7] (8) {0.0000189};
\end{tikzpicture}
\end{document}
Der Nachteil dieser Lösung besteht darin, dass Sie die zusätzlich definierten Knoten manuell platzieren müssen. Jemand kann sich wahrscheinlich eine elegantere Lösung ausdenken als ich, was besonders praktisch wäre, wenn Sie viele dieser Diagramme erstellen müssen. Trotzdem scheint diese Lösung zumindest das zu bieten, wonach Sie in diesem Fall suchen.
Eine matrixbasierte Lösung
Eine andere Lösung, die das oben genannte Problem umgeht, nämlich das Problem, die Knoten jedes Mal manuell definieren zu müssen, wenn Sie eines dieser Diagramme zeichnen möchten (oder jedes Mal, wenn Sie die Größe eines Diagramms ändern), besteht darin, Folgendes zu tun \usetikzlibrary{matrix}
. Wenn alle Informationen in den Zeilen und Spalten einer Matrix platziert werden, können Sie das Problem vermeiden, die Informationen mit dem Befehl manuell anordnen zu müssen \node
, da dies automatisch geschieht, da die Informationen in den Zeilen und Spalten einer Matrix gespeichert sind.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{figure}[h!]
\begin{tikzpicture}[description/.style={fill=white,inner sep=2pt}]
\matrix (m) [matrix of nodes, row sep=1.5em,
column sep=0.3em, text height=1.5ex, text depth=0.25ex]
{
& & entity & & 0.395 \\
& & inanimate object & & 0.167 \\
& & natural object & & 0.0163 \\
& & geological formation & & 0.00176 \\
0.000113 & natural elevation & & shore & 0.0000836 \\
0.0000189 & hill & & coast & 0.0000216 \\
};
\path[-] (m-1-3) edge (m-2-3)
(m-2-3) edge (m-3-3)
(m-3-3) edge (m-4-3)
(m-4-3) edge (m-5-2)
(m-5-2) edge (m-6-2)
(m-4-3) edge (m-5-4)
(m-5-4) edge (m-6-4);
\end{tikzpicture}
\end{figure}
\end{document}