Pourriez-vous m'aider à réaliser des diagrammes de Venn (ou patates), éventuellement imbriqués (intersection, inclusion) et avec du texte à l'intérieur ?

Il faudrait en outre que les patates comportent un cartouche fléché indiquant le nom (nature) de l'ensemble en question. Il s'agit de matérialiser des relations d'inclusion entre genres et registres en littérature.

Posée 10 Mai, 22:44

Argyre's gravatar image

Argyre
212
Taux d'acceptation : 0%

Modifiée 10 Aoû, 15:01

Pathe's gravatar image

Pathe ♦♦
2.3k863

1
(11 Mai, 01:42) touhami touhami's gravatar image

Je reproduis ci-dessous un exemple trouvé sur l'excellent site texample.net.

Le code est de Till Tantau, le créateur de TikZ/PGF et de beamer, avec des modifications apportées par Kjell Magne Fauske. Je me suis contenté de traduire les commentaires.

Les librairies TikZ shapes et backgrounds sont utilisées. Pour bien comprendre ce code, je recommande de le compiler peu à peu : d'abord les trois premiers cercles, puis la première zone d'intersection, etc.

Ouvrir dans l'éditeur Overleaf
\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes,backgrounds}
\begin{document}
\pagestyle{empty}
% Suppose we have three circles or ellipses or whatever. Let us define
% commands for their paths since we will need them repeatedly in the
% following:
% FRANÇAIS — Soit un diagramme constitué de trois cercles ou ellipses.
% Nous définissons ces trois figures de manière à pouvoir les réutiliser :

\def\firstcircle{(0,0) circle (1.5cm)}
\def\secondcircle{(45:2cm) circle (1.5cm)}
\def\thirdcircle{(0:2cm) circle (1.5cm)}

% Now we can draw the sets:
% FRANÇAIS —  nous pouvons les dessiner :

\begin{tikzpicture}
    \draw \firstcircle node[below] {$A$};
    \draw \secondcircle node [above] {$B$};
    \draw \thirdcircle node [below] {$C$};

    % Now we want to highlight the intersection of the first and the
    % second circle:
    % FRANÇAIS — mettons en valeur la zone située
    % à l'intersection des deux premiers cercles :

    \begin{scope}
      \clip \firstcircle;
      \fill[red] \secondcircle;
    \end{scope}

    % Next, we want the highlight the intersection of all three circles:
    % FRANÇAIS — mettons maintenant en valeur la zone située
    % à l'intersection des trois premiers cercles :
    \begin{scope}
      \clip \firstcircle;
      \clip \secondcircle;
      \fill[green] \thirdcircle;
    \end{scope}

    % The intersection trick works pretty well for intersections. If you need
    % the set-theoretic difference between two sets, things are a little more
    % complicated:
    % FRANÇAIS — l'astuce fonctionne bien pour les intersections.
    % Néanmoins, si l'on désire différencier deux zones,
    % c'est un chouïa plus complexe :

    % Suppose we want to highlight the part of the first circle that is not 
    % also part of the second circle. For this, we need to clip against the 
    % "complement" of the second circle. The trick is to add a large rectangle
    % that encompasses everything and then use the even-odd filling rule 
    % (see the manual again):
    % FRANÇAIS — Supposons que nous désirions colorer la partie du premier cercle
    % qui ne fait pas partie du second. Pour cela, on va exclure la zone.
    % On ajoute donc un rectangle qui englobe l'ensemble,
    % et l'on utilise un remplissage type cache/contre-cache :

    \begin{scope}[shift={(6cm,0cm)}]
        \begin{scope}[even odd rule]% first circle without the second
        % FRANÇAIS — Le premier cercle SANS le second
            \clip \secondcircle (-3,-3) rectangle (3,3);
        \fill[yellow] \firstcircle;
        \end{scope}
        \draw \firstcircle node {$A$};
        \draw \secondcircle node {$B$};
    \end{scope}

    % When using the above, you will notice that the border lines of the
    % original circles are erased by the intersection parts. To solve this
    % problem, either use a background layer (see the manual) or simply draw
    % the border lines after everything else has been drawn.
    % FRANÇAIS — L'exemple précédent montre que les contours des cercles
    % sont effacés par les zones d'intersection.
    % Pour éviter ce phénomène, il est possible de dessiner les contours
    % après des intersactions. D'autres solutions sont possibles
    % et évoquées dans le manuel.

    % The last trick is to cheat and use transparency
    % FRANÇAIS — La dernière astuce consiste à utiliser des transparences
    \begin{scope}[shift={(3cm,-5cm)}, fill opacity=0.5]
        \fill[red] \firstcircle;
        \fill[green] \secondcircle;
        \fill[blue] \thirdcircle;
        \draw \firstcircle node[below] {$A$};
        \draw \secondcircle node [above] {$B$};
        \draw \thirdcircle node [below] {$C$};
    \end{scope}

\end{tikzpicture}

% Naturally, all of this could be bundled into nicer macros, but the above 
% should give the idea.
% FRANÇAIS — Ce code pourrait être amélioré par des macros,
% mais l'idée générale est là.

\end{document}

Étant bien certain que cette traduction peut être améliorée (notamment par des utilisateurs frottés au vocabulaire spécifique aux diagrammes de Venn), je rends cette contribution modifiable par les autres usagers du présent site.

Lien permanent
Cette réponse est marquée comme « Wiki ».

Publiée 11 Mai, 11:11

Pathe's gravatar image

Pathe ♦♦
2.3k863
Taux d'acceptation : 59%

Modifiée 11 Mai, 11:14

Peut-on, et dans l'affirmative, comment écrire dans l'intersection de ces ensembles ?

Peut-on donner une étiquette à chaque cercle ?

(11 Mai, 16:34) Argyre Argyre's gravatar image

@Argyre Attention ! Cette réponse était un commentaire plutôt qu'une réponse et a été convertie comme tel.

Par ailleurs, les formules de politesse et les signatures sont à éviter : celle(s) de votre contribution a (ont) été supprimée(s).

(11 Mai, 16:48) Pathe ♦♦ Pathe's gravatar image

@Argyre Pour placer des étiquettes, il suffit d'ajouter des nœuds aux endroits désirés, à l'aide de la commande \node.

Sur le site du LaTeX Cookbook de Stefan Kottwitz (un utile ouvrage anglophone) on trouve une explication détaillée.

(12 Mai, 01:13) Pathe ♦♦ Pathe's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.

Mots-clés de la question :

×4
×1

Question posée : 10 Mai, 22:44

Question vue : 585 fois

Dernière mise à jour : 12 Mai, 07:40