Grafik hizalaması

Sep 20 2020

Tikz'de yeniyim ve bazı egzersizler yapıyorum. " Olasılıksal Grafik Modeller " kitabında küçük bir bayes ağı örneğine rastladım ve çizmeye çalışacağımı düşündüm. graphsDüğümler bağlayarak tanımlanır iyi seçenek gibiydi ama modül biraz garip şekilde tüm düğümlerin yerleştirir. İşte resim

ve işte kod:

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

Sanırım neler olduğunu anlıyorum. Düğüm GJ, ağacın geri kalanı için alan oluşturmak üzere sağa doğru itilir. Her seviye yatay olarak hizalanmış olarak grafiği daha kompakt hale getirmenin bir yolu olup olmadığını merak ediyordum. Ayrıca, grafikteki mantığı ifade etmek için bazı düğüm gruplarını nasıl kaydırabilirim (yatay, dikey) merak ediyordum; G (X) ler aynı seviyede olmalı ve B (X) ler aşağıda olmalıdır.

Uygun grafik düzeni aşağıdadır ve modülün kendi kullanışlılığını bir şekilde bozduğu için tamamen mutlu olmadığım matrixve kombinasyonunu kullandım .graphsgraphs

Teşekkürler.

Yanıtlar

1 Evion Sep 20 2020 at 21:27

Geçiş Layered layoutseçeneğini misiniz değil paketlerin dikkat ve pgfmanual / TikZ önerildiği gibi Lualatex ile derlemek ?, düğümleri için dairesel şekiller preffer. :)

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