
私は tikz を初めて使い、いくつかの演習をしています。本の中で小さなベイジアン ネットワークの例を見つけました。確率的グラフィカルモデル「描いてみようと思った。graphs
ノードは接続して定義されるのが最良の選択のようだが、モジュールはすべてのノードをやや奇妙な方法で配置する。これが絵だ
コードは次のとおりです。
\documentclass{standalone}
\usepackage[utf8]{inputenc}
%\usepackage[margin=1cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, graphs, matrix, shapes.geometric}
\begin{document}
\begin{tikzpicture}
\graph[grow down, grow down sep=3mm, branch right=2.5cm,
edges={>=Latex, semithick, color=black},
nodes={draw, ellipse, fill=black!10, very thick,
minimum width=2cm, minimum height=10mm}] {
GC -> {
BC -!- GH -> {
BH,
GB -> BB,
GL -> BL,
GN -> BN,
},
GM -> {
GB,
GL,
GN,
BM,
},
GS -> BS,
},
GJ -> {
GM,
GS,
BJ,
},
};
\end{tikzpicture}
\end{document}
何が起こっているのかは理解できたと思います。ノードは、GJ
ツリーの残りの部分のためのスペースを作るために、単に右に押し出されています。各レベルを水平に揃えて、グラフをよりコンパクトにする方法があるかどうか疑問に思っていました。また、グラフ内のロジックを表現するために、一部のノード グループを (水平、垂直に) シフトする方法も疑問に思っていました。G(X) は同じレベルにあり、B(X) はその下にあります。
適切なグラフ レイアウトは以下のとおりです。matrix
との組み合わせを使用しましたgraphs
が、モジュール自体の有用性が損なわれるため、あまり満足していませんgraphs
。
ありがとう。
答え1
Layered layout
オプション「ノードには円形の方が好みではないですか?」を渡し、パッケージをメモして、pgfmanual/tikz で推奨されているように Lualatex でコンパイルします。 :)
\documentclass{standalone}
\usepackage[utf8]{inputenc}
%\usepackage[margin=1cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, graphs,graphdrawing, shapes.geometric }
\usegdlibrary{layered}
\begin{document}
%Compile with luaLatex
\begin{tikzpicture}
\graph[
layered layout,
sibling distance =3cm,
level distance =3cm,
edges={>=Latex, semithick, color=black},
nodes={draw, ellipse, fill=black!10, very thick,
minimum width=2cm, minimum height=10mm}
]
{
GC -> {
BC -!- GH -> {
BH,
GB -> BB,
GL -> BL,
GN -> BN,
},
GM -> {
GB,
GL,
GN,
BM,
},
GS -> BS,
},
GJ -> {
GM,
GS,
BJ,
},
};
\end{tikzpicture}
\end{document}