Page 1 sur 1

Arbre et Tikz/Pgf

MessagePosté: Mardi 02 Juin 2009, 21:25
par Fabrice Couvreur
Bonsoir à tous,
L'idée est de demander aux élèves de compléter un arbre.
Je souhaiterais ajouter des pointillés verticaux, ainsi que les textes : choix toit ; choix fenêtre ; choix porte sous les niveaux successifs.

Code: Tout sélectionner
\documentclass[a4paper,landscape]{article}

\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{geometry}

\usepackage{tikz}
\usetikzlibrary{trees}
\usetikzlibrary{shapes}

\begin{document}

\begin{center}
\begin{tikzpicture}[level/.style={sibling distance=10mm}]
\node{}[grow=right]
child{node{J}}
child{node{R}}
child{node{B}
child{node{J}}
child{node{R}}
child{node{B}
child{node{J}}
child{node{R}}
child{node{B}}}
};
\end{tikzpicture}
\end{center}   
\end{document}


Merci pour votre aide.

Re: Arbre et Tikz/Pgf

MessagePosté: Mercredi 03 Juin 2009, 22:06
par pg
Tu pourrait être un peu plus précis ? Car je dois dire que je n'ai rien compris à ce que tu voulais faire.

Re: Arbre et Tikz/Pgf

MessagePosté: Mercredi 03 Juin 2009, 22:27
par Fabrice Couvreur
Bonsoir pg,
L'arbre est ébauché, et les trois branches issues du premier noeud indiquent le choix de la couleur pour le toit, les trois branches issues du second noeud le choix de la couleur pour la fenêtre et les trois branches issues du dernier noeud le choix de la couleur pour la porte (un enfant colorie au hasard ces trois éléments).
Je souhaiterais indiquer en dessous des trois premières branches : choix toit, en dessous des trois branches suivantes : choix fenêtre et en dessous des trois dernières branches : choix porte.
Ces trois labels étant alignés.
Les traits verticaux en pointillés indiquent que l'arbre n'est pas fini (en dessous du J pour le deuxième noeud et le troisième noeud ).
Suis-je plus clair ?
Merci.

Re: Arbre et Tikz/Pgf

MessagePosté: Mercredi 03 Juin 2009, 23:26
par pg
Quelque chose comme cela ?

arbre_choix.png
arbre_choix.png (4.86 Kio) Vu 2246 fois


Code: Tout sélectionner
\documentclass[a4paper,landscape]{article}

\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{geometry}

\usepackage{tikz}
\usetikzlibrary{trees}
\usetikzlibrary{shapes}

\newcommand{\minibox}[2][c]{\begin{tabular}{#1}#2\end{tabular}}

\begin{document}

\begin{center}
\begin{tikzpicture}[level/.style={sibling distance=10mm}]
\node{}[grow=right]
child{node{J}}
child{node{R}}
child{node{B}
child{node{J}}
child{node{R}}
child{node{B}
child{node{J}}
child{node{R}}
child{node{B}}}
};
\node at (3,-0.75) {$\vdots$};
\node at (4.5,0.25) {$\vdots$};
\node at (1.5,-2) {\minibox{choix\\toit}};
\node at (3,-2) {\minibox{choix\\fenêtre}};
\node at (4.5,-2) {\minibox{choix\\porte}};
\end{tikzpicture}
\end{center}   
\end{document}

Re: Arbre et Tikz/Pgf

MessagePosté: Jeudi 04 Juin 2009, 07:07
par Fabrice Couvreur
Bonjour pg,
Super, c'est exactement ce que je cherchais à faire.
Merci beaucoup.

Re: Arbre et Tikz/Pgf

MessagePosté: Dimanche 07 Juin 2009, 12:09
par Fabrice Couvreur
Bonjour pg,
J'ai encore besoin de tes conseils!
Comment fonctionne le repérage avec les arbres ?
En effet, dans le code qui suit, j'ai un peu tâtonné pour ancrer les noeuds.
Code: Tout sélectionner
\documentclass[a4paper,landscape]{article}

\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{geometry}

\usepackage{tikz}
\usetikzlibrary{trees}
\usetikzlibrary{shapes}

\begin{document}
 \begin{flushleft}
\begin{tikzpicture}[level distance=30mm,level 1/.style={sibling distance=20mm}]
\coordinate[grow=right]
child{node{exercice~4}}
child{node{exercice~3}}
child{node{exercice~2}}
child{node{exercice~1}
child{node{exercice~D}}
child{node{exercice~C}}
child{node{exercice~B}}
child{node{exercice~A}}
};
\node at (6,-1) {$\vdots$};
\node at (2.5,-4){\minibox{1$^{\mathrm{ère}}$ catégorie}};
\node at (6,-4) {\minibox{2$^{\mathrm{e}}$ catégorie }};
\end{tikzpicture}
\end{flushleft}
\end{document}

Comment améliorer la présentation, notamment au niveau des labels (alignement à la terminaison des branches) ?
Merci pour ton aide.


PS : je manque un peu de temps pour me plonger dans la doc.

Re: Arbre et Tikz/Pgf

MessagePosté: Dimanche 07 Juin 2009, 19:29
par pg
Puisque tu utilises un "level distance" de 3cm, l'abscisse des catégories sera 3cm et 6cm (de même, le \vdots sera à 6cm). Puisque le sibling distance est de 2cm et qu'il y a un nœud et demi en dessous de la racine, il faut que l'ordonnées des catégories soit d'au moins 1,5 * 2cm = 3cm auquel il faut rajouter une distance de sécurité de 1cm ou 1,5cm. De même, le \vdots doit être au niveau du premier nœud en dessous de la racine donc son ordonnée être de 0,5*2cm = 1cm.

En tout :

arbre_exos.png


Code: Tout sélectionner
\documentclass[a4paper,landscape]{article}

\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{geometry}

\usepackage{tikz}
\usetikzlibrary{trees}
\usetikzlibrary{shapes}

\newcommand{\minibox}[2][c]{\begin{tabular}{#1}#2\end{tabular}}

\begin{document}
\begin{flushleft}
\begin{tikzpicture}[level distance=30mm,level 1/.style={sibling distance=20mm},grow=right]
\coordinate
child{node{exercice~4}}
child{node{exercice~3}}
child{node{exercice~2}}
child{node{exercice~1}
  child{node{exercice~D}}
  child{node{exercice~C}}
  child{node{exercice~B}}
  child{node{exercice~A}}
};
\node at (6,-1) {$\vdots$};
\node at (3,-4.5){\minibox{1\iere{} catégorie}};
\node at (6,-4.5) {\minibox{2\ieme{} catégorie}};
\end{tikzpicture}
\end{flushleft}
\end{document}

Re: Arbre et Tikz/Pgf

MessagePosté: Lundi 08 Juin 2009, 11:46
par Fabrice Couvreur
Bonjour pg,
Je découvre à l'instant ce que tu me proposes, et je t'en remercie.
Toutefois, je ne suis pas sûr de tout comprendre.
- l'unité graphique est-elle le PostScript ?
- "level distance" fixe le point d'ancrage du premier niveau à la distance choisie par rapport à une origine (0,0) qui correspond au "pied" de l'arbre ?
-
pg a écrit:Puisque le sibling distance est de 2cm et qu'il y a un nœud et demi en dessous de la racine

Je ne comprends pas trop !
- comment faire pour avoir les branches issues du noeud "exercice 1" comme pour les branches issues du "pied "?
Je suppose qu'il faut utiliser \coordinate, mais je n'y arrive pas.
Merci.

Re: Arbre et Tikz/Pgf

MessagePosté: Lundi 08 Juin 2009, 20:12
par pg
Dans la plupart des cas, l'unité graphique est le cm, mais dans certains cas c'est le pt donc il vaut mieux toujours mettre le cm après, c'est plus sûr.

Pour le reste, peut-être qu'un dessin vaudra mieux que mon explication précédente ?

arbre_exos_legende.png


On repère sur la grille où on veut mettre des choses et ensuite on utilise \node at (x,y) {texte};

Re: Arbre et Tikz/Pgf

MessagePosté: Lundi 08 Juin 2009, 22:02
par Fabrice Couvreur
Bonsoir pg,
Ton graphique (très explicite !) me conforte dans ce que je crois avoir compris en lisant la doc page 187.
Merci beaucoup.

Re: Arbre et Tikz/Pgf

MessagePosté: Mardi 09 Juin 2009, 08:17
par projetmbc
Bonjour,
peut-on utiliser différentes "level distance" et "sibling distance" suivant la catégorie ?

Re: Arbre et Tikz/Pgf

MessagePosté: Mardi 09 Juin 2009, 08:20
par pg
Tu peux utiliser quelque chose du genre
Code: Tout sélectionner
\begin{tikzpicture}[level 1/.style={level distance=30mm,sibling distance=20mm},level 2/.style={level distance=40mm,sibling distance=10mm},grow=right]

Re: Arbre et Tikz/Pgf

MessagePosté: Mardi 09 Juin 2009, 08:33
par projetmbc
Génial !Merci.

Sinon pour déterminer ces distances, il n'y a rien d'autre à faire que tatoner.

Re: Arbre et Tikz/Pgf

MessagePosté: Mardi 09 Juin 2009, 08:48
par pg
C'est pas tout à fait du tâtonnement, mais pour placer deux ou trois éléments par-ci par-là, ça ne vaut pas le coup d'essayer de nommer les nodes et ensuite de placer les éléments avec la librairie calc de tikz.

Re: Arbre et Tikz/Pgf

MessagePosté: Mardi 09 Juin 2009, 09:02
par projetmbc
En fait, le sens de ma question était effectivement de savoir s'il existait un moyen d'automatiser la construction des arbres.

Re: Arbre et Tikz/Pgf

MessagePosté: Vendredi 12 Juin 2009, 11:39
par pg
Je pense qu'on c'est mal compris. Je parlais d'automatiser le placement des commentaires comme ce que Fabrice demandait (ce qui ne vaut vraiment pas le coup). Toi tu veux que TikZ choisisse automatiquement le sibling distance en fonction du nombre et du placement des noeuds, c'est ça ?

Re: Arbre et Tikz/Pgf

MessagePosté: Vendredi 12 Juin 2009, 12:31
par projetmbc
Effectivement je voudrais pouvoir définir un arbre juste via sa structure en laissant le boulot à TiKz pour les placements graphiques.

Est-ce possible ?