Diagramme Venn tikz

adrien2019
Modifié (June 2022) dans LaTeX
Bonsoir à tous
Je souhaiterais réaliser en tex (avec tikz) le diagramme de Venn en image jointe (pour l'instant réalisé en Mathematica). Quelqu'un sait-il comment réaliser des diagrammes de Venn propres ?
En plus du code à rentrer pour le remplissage correct de chaque sous-ensemble, je bugue sur l'ajout des petits carrés de légendes pour les couleurs : y a-t-il une façon prévue par Tikz pour ce genre de légendes (autre bien sûr que de tracer ces petits carrés à la main) ?
Je vous remercie d'avance pour votre aide !

Réponses

  • Médiat_Suprème
    Modifié (June 2022)
    Avez-vous essayé le package venndiagram ?

    pst-venn semble plus riche, mais il utilise P§STricks
    Il ne faut pas respirer la compote, ça fait tousser.

    J'affirme péremptoirement que toute affirmation péremptoire est fausse
  • AD
    AD
    Modifié (June 2022)
    Bonsoir Adrien
    As-tu vu le tutoriel "Tikz pour l'impatient" pages 137 à 144 http://math.et.info.free.fr/TikZ/bdd/TikZ-Impatient.pdf
    Sinon, il y a des exemples 
    https://texample.net/tikz/examples/tag/venn-diagram/
    https://texample.net/tikz/examples/venn-diagram/
    sur google "exemples tikz diagramme de Venn" te donne d'autres exemples.
    Alain
  • adrien2019
    Modifié (June 2022)
    Bonsoir
    Désolé pour la réponse très tardive (comme d'habitude...). Merci pour vos réponses ! J'ai réussi un truc pas trop mal en utilisant le message de AD ainsi que quelques idées piquées sur internet (notamment pour "cbox"). Voici le code:
    \documentclass[a4paper,8pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{stmaryrd}
    \usepackage{graphicx}
    \usepackage{multicol}
    \usepackage{mathtools}
    \usepackage{amsthm}
    \usepackage{float}
    \usepackage{braket}
    \usepackage[francais]{babel}
    \usepackage{graphicx}
    \usepackage{caption}
    \usepackage{xcolor}
    \usepackage{tikz}
    \usetikzlibrary{decorations.pathreplacing, calligraphy, tikzmark, matrix, fit, positioning}
    \usetikzlibrary{shapes,backgrounds}
    \usepackage[left=2.8cm,right=2.9cm,margin=2cm]{geometry}
    \usepackage{tcolorbox}
    \newcommand{\cbox}[1]{\raisebox{\depth}{\fcolorbox{black}{#1}{\null}}} \setlength{\parindent}{0pt} \begin{document} ... \def\A{(-1,2) circle (2cm)} \def\B{(1,2) circle (2cm)} \def\C{(0,0) circle (2cm)} \begin{figure}[H] \centering \begin{tikzpicture} \node[left](A) at (-3.1,2) {\LARGE $A$}; \node[right](B) at (3.1,2) {\LARGE $B$}; \node[below](C) at (0,-2.1) {\LARGE $C$}; \begin{scope}[even odd rule] \clip \C (-4.2,-2.7) rectangle (4.2,4.2); \fill[gray!25] \B; \end{scope}
    \begin{scope}[even odd rule] \clip \A (-4.2,-2.7) rectangle (4.2,4.2); \fill[gray] \C; \end{scope} \begin{scope} \clip \A; \clip \B; \fill[black!85] \C; \end{scope}
    \draw \A; \draw \B; \draw \C; \node[right](D) at (2,-0.5) {\cbox{white} $A \setminus B$}; \node[right](E) at (2,-1) {\cbox{gray!25} $B \setminus C$}; \node[right](F) at (2,-1.5) {\cbox{gray} $C \setminus A$}; \node[right](G) at (2,-2) {\cbox{black!85} $A \cap B \cap C$};
    \end{tikzpicture} \captionsetup{labelformat=empty} \caption{Diagramme de Venn de la situation} \end{figure} \end{document}
    Il n'est sans doute pas minimal (j'utilise toujours le même préambule monstrueux et je retire "par paquets" ce qui me semble en trop à chaque fois que je fais un exemple pour ce site).
    C'est pas mal mais je souhaiterais diminuer globalement la taille de la légende : dans l'idéal, les $A$, $B$ et $C$ à côté des ensembles seraient de taille normale, et c'est la légende qui serait plus petite (au lieu d'être de taille normale comme elle l'est actuellement). J'ai essayé avec des "scriptsize" ou autres, mais ça fout en l'air l'alignement avec le "cbox" (y a-t-il d'ailleurs également un moyen de réduire la taille des carrés "cbox"?).
    Quelqu'un a-t-il une solution ?
    [Ce qui donne après compilation. AD]

  • AD
    AD
    Modifié (June 2022)
    Bonsoir Adrien
    La taille normale est petite (tu définis 8pt dans documentclass).
    Pour avoir les $A,B,C$ en taille normale tu supprimes les \LARGE dans les nodes les définissant.
    Pour la légende, je te suggère de la placer dans un scope. Ainsi, tu pourras déplacer toute la légende d'un coup [xshift=..,yshift=..] (j'ai placé la légende à gauche ainsi le $A\cap B\cap C$ peut mordre en dessous du disque $C$) et diminuer sa taille par un [scale=0.85]. Pour diminuer les caractères de la légende, il faut [scale=0.85] dans chaque nœud, ou préférablement définir un style dans le scope [leg/.style={right,scale=0.85}]
    \begin{scope}[xshift=-3.5cm,yshift=0cm,scale=0.85,leg/.style={right,scale=0.85}]
    \node[leg](D) at (0,-0.5) {\cbox{white} $A \setminus B$};
    \node[leg](E) at (0,-1) {\cbox{gray!25} $B \setminus C$};
    \node[leg](F) at (0,-1.5) {\cbox{gray} $C \setm\inus A$};
    \node[leg](G) at (0,-2) {\cbox{black!85} $A \cap B \cap C$};
    \end{scope}
     Ce qui donne

  • @AD ça marche très bien! Merci!
Connectez-vous ou Inscrivez-vous pour répondre.