有向集合のこの tikz グラフの改善にご協力ください

有向集合のこの tikz グラフの改善にご協力ください

私は tikz 初心者です。有向集合のグラフを描きたかったのですが、何が起こっているのかよく理解せずに、オンラインの例のコードを組み合わせてなんとか描きました。今、私はいくつかの改善を行いたいと思っていますが、そのための例 (コードに統合できるもの) が見つかりませんでした。

これまでの私のコード:

\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzset{main node/.style={circle,draw}}
...
\begin{tikzpicture}
\node[main node] (B) {};
\node[main node] (a) [above left = 1 cm and 1cm of B] {$\alpha$};
    \node[main node] (a1)  [above left = 1 cm and 1cm of a]  {};
    \node[main node] (a2)   [above right = 1 cm and 1cm of a] {};
    \node[main node] (g) [above right = 1cm and 1cm of B] {$\gamma$};
    \node[main node] (g1)   [above left = 1 cm and 1cm of g]{};
    \node[main node] (g2)   [above right = 1 cm and 1cm of g]{};
    \node[main node] (g3)   [above right = 1 cm and 1cm of g2]{};
\path[draw,thick]
    (B) edge node {} (a)
    (B) edge node {} (g)
    (a) edge node {} (a1)
    (a) edge node {} (a2)    
    (g) edge node {} (g1)
    (g) edge node {} (g2)
    (g2) edge node {} (g3);         
\end{tikzpicture}

これまでの私の成果:グラフ

改善したい点:

1) グラフが継続していることを示したいと思います。たとえば、右上のノードとエッジを、現在のエッジの方向にある 3 つのダッシュに置き換えたいと思います。このような「3 つのダッシュの拡張」を の子にも追加したいと思います$\alpha$

2) 1) で示した拡張部分を含む のすべての子孫を囲む四角形を描きます$\alpha$。このボックスの上部に次のようなテキストを入れます。$\geq\alpha$

3) すべての円を同じサイズにしたいのですが、これは最大のラベルによって自動的に決定されます。

編集:

minimum size=1cm3) はノードのスタイルに を使用することで部分的に解決できます。ただし、ラベル、フォント、その他のサイズが変更されるたびに 1cm 調整する必要があります。

答え1

1 は、ノードを非表示にして ( を省略draw)、エッジを にすることで実行できますdashed

2 は tikzlibrary を使用して実行できますfit

3 はかなり難しいです。なぜなら、すべてのノードが処理された後にのみ最大ノードがわかるのに対し、ノード サイズを事前に設定する必要があるからです。これに対処する方法はいくつかありますが、絶対サイズを定義する (自分で提案したように) か、または、代わりに、ユーザーが提供する最大ノード (以下の MWE 内) から最大サイズを計算する方が (はるかに) 簡単です。

注: この解決策は既存の質問に基づいています: 例:Tikz - ノードセットの周囲にボックスを描く方法新しい質問をする前に、必ず広範囲な検索を行ってください。MWE については、 が含まれ\documentclass、が\begin{document}含まれず、コンパイルされることを確認してください...

MWE:

\documentclass{article}
\usepackage{tikz}
\usepackage{calc}
\usetikzlibrary{positioning}
\usetikzlibrary{fit}
\tikzset{main node/.style={circle,draw}}

\newcommand{\largest}{$\gamma$}
\newlength{\sizemax}
\setlength{\sizemax}{\maxof{\widthof{\largest}}{\totalheightof{\largest}}}
\tikzset{minimum size=\sizemax+10pt}

\begin{document}
\begin{tikzpicture}
\node[main node] (B) {};
\node[main node] (a) [above left = 1cm and 1cm of B] {$\alpha$};
    \node[main node] (a1)  [above left = 1cm and 1cm of a]  {};
    \node[main node] (a2)   [above right = 1cm and 1cm of a] {};
    \node (a1x)   [above left = 1cm and 1cm of a1]{};
    \node (a2x)   [above left = 1cm and 1cm of a2]{};
    \node[main node] (g) [above right = 1cm and 1cm of B] {$\gamma$};
    \node[main node] (g2)   [above right = 1cm and 1cm of g]{};
    \node (g3)   [above right = 1cm and 1cm of g2]{};
\path[draw,thick]
    (B) edge (a)
    (B) edge (g)
    (a) edge (a1)
    (a) edge (a2)    
    (g) edge (a2)
    (g) edge (g2)
    (g2) edge[dashed] (g3)
    (a1) edge[dashed] (a1x)
    (a2) edge[dashed] (a2x);
\node[draw,fit=(a) (a1) (a2) (a1x) (a2x)] (ad) {};
\node[above=0mm of ad] {$\geq\alpha$};
\end{tikzpicture}
\end{document}

結果:

ここに画像の説明を入力してください

関連情報