幫助改進這個有向集的 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)我想指出該圖仍在繼續。例如,我想將右上節點和邊緣替換為目前邊緣方向上的三個破折號。我還想將這樣的“三破折號擴展”添加到 的子級中$\alpha$

2) 我想在 的所有後代周圍繪製一個矩形$\alpha$,包括從點 1) 開始的指定延伸。我想在這個框的頂部寫一段文字說$\geq\alpha$

3)我想讓所有圓圈具有相同的大小,這是由最大的標籤自動決定的。

編輯:

我可以透過使用minimum size=1cm節點的樣式來部分解決 3) 問題。然而,每當標籤、字體、其他尺寸變更時,這將需要調整 1cm

答案1

1 可以透過使節點不可見(省略draw)並設定邊來完成dashed

2 可以使用 tikzlibrary 完成fit

3 比較困難,因為你必須預先設定節點大小,而只有在處理完所有節點後才能知道最大的節點。有多種方法可以解決這個問題,但定義絕對大小(如您自己建議的那樣)或從使用者提供的最大節點(在下面的 MWE 中)計算最大大小會(容易得多)。

注意:此解決方案基於現有問題:例如,Tikz - 如何在節點集周圍繪製方框。在提出新問題之前,請務必進行廣泛的搜尋。對於您的 MWE,請確保它可以編譯,即包含\documentclass,\begin{document}且不包含....

微量元素:

\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}

結果:

在此輸入影像描述

相關內容