Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I have a 3-circle venn diagram

\def\firstcircle{(0,0) circle (2cm)}
\def\secondcircle{(55:2.67cm) circle (2cm)}
\def\thirdcircle{(0:3cm) circle (2cm)}

% Now we can draw the sets:
\begin{tikzpicture}
    \draw \firstcircle node[below] {$A$};
    \draw \secondcircle node [above] {$B$};
    \draw \thirdcircle node [below] {$C$};
\end{tikzpicture}

How do I add text labels where the circles overlap?

share|improve this question
add comment

4 Answers 4

A simple solution is

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
  \tikzset{venn circle/.style={draw,circle,minimum width=6cm,fill=#1,opacity=0.4}}

  \node [venn circle = red] (A) at (0,0) {$A$};
  \node [venn circle = blue] (B) at (60:4cm) {$B$};
  \node [venn circle = green] (C) at (0:4cm) {$C$};
  \node[left] at (barycentric cs:A=1/2,B=1/2 ) {$A \cap B$}; 
  \node[below] at (barycentric cs:A=1/2,C=1/2 ) {$A \cap C$};   
  \node[right] at (barycentric cs:B=1/2,C=1/2 ) {$B \cap C$};   
  \node[below] at (barycentric cs:A=1/3,B=1/3,C=1/3 ){$A \cap B \cap C$};
\end{tikzpicture}  
\end{document}

enter image description here

share|improve this answer
3  
Very nice use of barycentric coordinates. You could even handle circles of different radii by using appropriate factors in the coordinate specification. –  Loop Space Aug 20 '11 at 10:49
    
Yes you are right but I made this solution very quickly without flourish . There is a little problem with the names of the first circles and opacity. –  Alain Matthes Aug 20 '11 at 11:32
    
Excellent approach! –  Jake Aug 20 '11 at 13:50
    
It's important to note that you cannot use spacesin the barycentric coordinate specifications (like A = 1/2). This is noted in section 13.2.2 of the TikZ manual, but it wouldn't be obvious to someone adapting the code from this answer. Adding the spaces leads to an error. –  Aaron Mar 19 '13 at 0:14
add comment

You could place the labels manually by using \node at (<x>,<y>) {$A \cap C$};, but you'd have to find the coordinates by trial and error.

A more "proper" way is using the intersections library. To use it, you name the paths you want to intersect using unique names (name path=<name>), in this case the circles.

Then you can find the intersections by issuing name intersections = {of=<firstpath> and <secondpath>} as an argument to a path or a draw command.

The intersections will be available as coordinate nodes with the naming scheme intersection-<number>. You can now define a path between two intersections, and place a node halfway between the intersections using node [pos=0.5] {<label>} in the path.

For labelling the central overlap, you could use the calc library to specify the average of the circle coordinates using ($0.33*(A)+0.33*(B)+0.33*(C)$):

venn diagrams label

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\usetikzlibrary{calc}


\begin{document}

\def\firstcircle{[name path=firstcircle] (0,0) circle (2cm)}
\def\secondcircle{[name path=secondcircle] (55:2.67cm) circle (2cm)}
\def\thirdcircle{[name path=thirdcircle] (0:3cm) circle (2cm)}

% Now we can draw the sets:
\begin{tikzpicture}
    \draw \firstcircle node[below,name=A] {$A$};
    \draw \secondcircle node [above,name=B] {$B$};
    \draw \thirdcircle node [below,name=C] {$C$};
    \path [ name intersections = {of = firstcircle and secondcircle } ] (intersection-1) -- (intersection-2) node [pos=0.5] {$A \cap B$};
    \path [ name intersections = {of = secondcircle and thirdcircle } ] (intersection-1) -- (intersection-2) node [pos=0.5] {$B \cap C$};
    \path [ name intersections = {of = firstcircle and thirdcircle } ] (intersection-1) -- (intersection-2) node [pos=0.5] {$A \cap C$};
    \node at ($0.33*(B)+0.33*(C)+0.33*(A)$) {$A \cap B \cap C$};
\end{tikzpicture}

\end{document}
share|improve this answer
    
thanks, how about where the three overlap? –  umar Aug 19 '11 at 12:19
    
If you're using the calc library to get the threefold overlap, you might as well do it for the others. The A interect B label can go at $0.5*(A) + 0.5*(B)$, etc. –  Matthew Leingang Aug 19 '11 at 15:52
    
Also, do you have a solution that would accommodate circles of different sizes? For instance, if you change the size of circle A to 3cm, the label for B is in B intersect C, and the label for B intersect C is in A intersect B intersect C. –  Matthew Leingang Aug 19 '11 at 15:54
add comment

enter image description here

\documentclass{article}
\usepackage{pst-node}   
\SpecialCoor

\usepackage[active,tightpage]{preview}
\PreviewBorder=0pt\relax
\PreviewEnvironment{pspicture}

\begin{document}

\begin{pspicture}(-3.25,-3.25)(3.25,3.25)
  \def\R{1}
  \def\RR{2}    
  \pnode(\R;30){A}\rput(\RR;30){$A$}
  \pnode(\R;150){B}\rput(\RR;150){$B$}
  \pnode(\R;270){C}\rput(\RR;270){$C$}
  \psset{opacity=0.4}
  \def\r{2}
  \pscircle*[linecolor=red](A){\r} 
  \pscircle*[linecolor=green](B){\r} 
  \pscircle*[linecolor=blue](C){\r}
  \def\d{1.5}
  \rput(\d;90){$A \cap B$}
  \rput(\d;210){$B \cap C$}
  \rput(\d;-30){$A \cap C$}  
  \rput(0,0){$A\cap B\cap C$}
\end{pspicture}

\end{document}
share|improve this answer
add comment

Run it with XeLaTeX

\documentclass{article}
\usepackage{pst-node}    
\begin{document}

\begin{pspicture}(-2,-2)(5,4)
  \psnode(0,0){first}{A}\psnode(2.67;55){second}{B}\psnode(3,0){third}{C}
  \pscircle*[linecolor=red,opacity=0.4](first){2} 
  \pscircle*[linecolor=green,opacity=0.4](second){2} 
  \pscircle*[linecolor=blue,opacity=0.4](third){2}
  \ncline[linestyle=none]{first}{second}\ncput{$A \cap B$}
  \ncline[linestyle=none]{first}{third}\ncput{\rnode{AC}{$A \cap C$}}
  \ncline[linestyle=none]{second}{third}\ncput{$B \cap C$}
  \ncline[linestyle=none]{second}{AC}\ncput[npos=0.75]{$A\cap B\cap C$}
\end{pspicture}

\end{document}

enter image description here

share|improve this answer
    
thanks, how about where the three overlap? –  umar Aug 19 '11 at 12:19
    
see edited answer –  Herbert Aug 19 '11 at 12:25
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.