
私はTikZを使ってこのようなワードネットを描いてみます
でも、何から始めたらいいのか本当にわかりません。誰かこのグラフを描くのを手伝ってくれませんか?残念ながら、TikZ に関する本を読む時間がありません。今日の宿題の一部です :(
答え1
強力なforest
パッケージ:
\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}
答え2
ツリーベースのソリューション
これを解決する 1 つの方法は、 を および と組み合わせて使用することです。\usetikzlibrary{positioning}
後者の 2 つを使用すると、目的のツリーのようなツリー構造を描画できます。また、ライブラリを使用すると、他のノードに基づいてノードを定義し、単語に対して相対的に番号を配置できます。qtree
tikz-qtree
positioning
このようなソリューションの MWE は次のとおりです。
\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}
このソリューションの欠点は、追加で定義されたノードを手動で配置する必要があることです。おそらく、私よりも洗練されたソリューションを思いつく人がいるでしょう。そのようなソリューションは、このような図をたくさん作成する必要がある場合に特に便利です。とはいえ、このソリューションは、少なくともこの場合、あなたが求めているものを提供しているようです。
マトリックスベースのソリューション
上で述べた問題、つまり、これらの図を描くたびに(または図のサイズを変更するたびに)ノードを手動で定義しなければならないという問題を回避するもう 1 つの解決策は、 です\usetikzlibrary{matrix}
。すべての情報をマトリックスの行と列内に配置すると、 コマンドを使用して情報を手動で配置しなければならないという問題を回避できます。\node
これは、情報がマトリックスの行と列に格納されているため、この処理が自動的に行われるためです。
\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}