Un particolare grafo ad albero

  • Creatore
    Topic
  • #94788
    Up
    0
    Down
    ::


    Salve,

    Ho bisogno di realizzare dei grafi ad albero che assomiglino a questo:

    http://speedy.sh/Pkc4D/provaalbero01.png

    Questo l’ho fatto con Dia spero che dia l’idea del risultato che vorrei ottenere anche se l’esportazione in .png ha dato qualche problema sovrapponendo dei caratteri.

    Studiandomi e modificando gli esempi che ho trovato in rete ho ottenuto questo:

    `
    \usetikzlibrary{shapes.gates.logic.US,positioning,shadows,arrows}
    %\usetikzlibrary{shapes.gates.logic.US,trees,positioning,arrows}

    \begin{document}
    \begin{center}
    \begin{tikzpicture}[
    numero/.style={rectangle, draw=none, rounded corners=1mm, fill=white, drop shadow,
    text centered, anchor=north},
    operatore/.style={and gate US,thick,draw,fill=white,rotate=90,
    anchor=north,yshift=3mm},
    level distance=1.5cm, growth parent anchor=south
    ]
    \node (Fact01) [numero] {$30$} [-]
    child{ [sibling distance=9cm]
    node (State01) [operatore] {$+$}
    child{
    node (Fact02) [numero] {$20$}
    child{ [sibling distance=4cm]
    node (State02) [operatore] {$-$}
    child{
    node (Fact03) [numero] {$28$}
    }
    child{
    node (Fact04) [numero] {$8$}
    child{ [sibling distance=1.2cm]
    node (State04) [operatore] {$:$}
    child{
    node (Fact05) [numero] {$24$}
    }
    child{
    node (Fact09) [numero] {$3$}
    }
    }
    }
    }
    }
    child{ [sibling distance=4cm]
    node (Fact10) [numero] {$10$}
    child{
    node (State10) [operatore] {$+$}
    child{
    node (Fact11) [numero] {$7$}
    }
    child{
    node (Fact12) [numero] {$3$}
    child{
    node (State12) [operatore] {$:$}
    child{
    node (Fact13) [numero] {$12$}
    }
    child{
    node (Fact14) [numero] {$4$}
    }
    }
    }
    }
    }
    }
    ;

    \end{tikzpicture}
    \end{center}
    \end{document}
    `

    Ma è abbastanza distante da ciò che mi propongo.

    In particolare vorrei:

    * che la radice dell’albero sia in basso;
    * che le foglie siano allineate in alto;
    * che il simbolo con l’operatore sia appoggiato al rettangolo che contiene il risultato;
    * che il testo contenuto nell’operatore non sia ruotato.

    Ringrazio per l’attenzione.

    Daniele

Visualizzazione 2 filoni di risposte
  • Autore
    Risposte
    • #94789
      Up
      0
      Down
      ::

      zambu” post=94385Salve,

      Ho bisogno di realizzare dei grafi ad albero che assomiglino a questo:

      http://speedy.sh/Pkc4D/provaalbero01.png

      Questo l’ho fatto con Dia spero che dia l’idea del risultato che vorrei ottenere anche se l’esportazione in .png ha dato qualche problema sovrapponendo dei caratteri.

      Studiandomi e modificando gli esempi che ho trovato in rete ho ottenuto questo:

      `
      \usetikzlibrary{shapes.gates.logic.US,positioning,shadows,arrows}
      %\usetikzlibrary{shapes.gates.logic.US,trees,positioning,arrows}

      \begin{document}
      \begin{center}
      \begin{tikzpicture}[
      numero/.style={rectangle, draw=none, rounded corners=1mm, fill=white, drop shadow,
      text centered, anchor=north},
      operatore/.style={and gate US,thick,draw,fill=white,rotate=90,
      anchor=north,yshift=3mm},
      level distance=1.5cm, growth parent anchor=south
      ]
      \node (Fact01) [numero] {$30$} [-]
      child{ [sibling distance=9cm]
      node (State01) [operatore] {$+$}
      child{
      node (Fact02) [numero] {$20$}
      child{ [sibling distance=4cm]
      node (State02) [operatore] {$-$}
      child{
      node (Fact03) [numero] {$28$}
      }
      child{
      node (Fact04) [numero] {$8$}
      child{ [sibling distance=1.2cm]
      node (State04) [operatore] {$:$}
      child{
      node (Fact05) [numero] {$24$}
      }
      child{
      node (Fact09) [numero] {$3$}
      }
      }
      }
      }
      }
      child{ [sibling distance=4cm]
      node (Fact10) [numero] {$10$}
      child{
      node (State10) [operatore] {$+$}
      child{
      node (Fact11) [numero] {$7$}
      }
      child{
      node (Fact12) [numero] {$3$}
      child{
      node (State12) [operatore] {$:$}
      child{
      node (Fact13) [numero] {$12$}
      }
      child{
      node (Fact14) [numero] {$4$}
      }
      }
      }
      }
      }
      }
      ;

      \end{tikzpicture}
      \end{center}
      \end{document}
      `

      Ma è abbastanza distante da ciò che mi propongo.

      In particolare vorrei:

      * che la radice dell’albero sia in basso;
      * che le foglie siano allineate in alto;
      * che il simbolo con l’operatore sia appoggiato al rettangolo che contiene il risultato;
      * che il testo contenuto nell’operatore non sia ruotato.

      Ringrazio per l’attenzione.

      Daniele

      Secondo me la struttura è sbagliata: con una matrice avresti meno problemi. Comunque sia:

      * che la radice dell’albero sia in basso; -> cerca [tt]growth’=up[/tt] nel manuale;
      * che le foglie siano allineate in alto; -> dipende dalla loro dimensione; puoi comunque giocare sulle dimensioni dei nodi nell’ultimo livello;
      * che il simbolo con l’operatore sia appoggiato al rettangolo che contiene il risultato; -> bisogna fare un attimo attenzione a modificare le distanze solo dei nodi operatori;
      * che il testo contenuto nell’operatore non sia ruotato. -> opzione [tt]shape border rotate[/tt] anziché [tt]rotate[/tt].

      Ciao
      Claudio

    • #94790
      Up
      0
      Down
      ::


      Scusa, ma sono molto ignorante in Latex, come potrei usare le matrici?

      Grazie, ciao

    • #94791
      Up
      0
      Down
      ::

      zambu” post=94408Scusa, ma sono molto ignorante in Latex, come potrei usare le matrici?

      Grazie, ciao

      Potresti leggere questo tutorial che spiega come realizzare schemi molto simili al tuo.

      Ciao
      Claudio

Visualizzazione 2 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top