5

I'd like to draw a curved arrow originating beneath the diagram and pointing to the center of the diagram, where the circles all converge. Where the arrow originates, I'd like to be able to make a label.

How do I do that?

Here's my MWE:

\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) {$cognitive$};
  \node [venn circle = blue] (B) at (60:4cm) {$linguistics$};
  \node [venn circle = green] (C) at (0:4cm) {$childhood$};
  \node[left] at (barycentric cs:A=1/2,B=1/2 ) {}; 
  \node[below] at (barycentric cs:A=1/2,C=1/2 ) {};   
  \node[right] at (barycentric cs:B=1/2,C=1/2 ) {};   
  \node[below] at (barycentric cs:A=1/3,B=1/3,C=1/3 ){X};
\end{tikzpicture}  
\end{document}
  • Can you add some image mock-up of what you want or describe it in a bit more detail? Which direction should the curve bend, how much curvature, etc. – Paul Gessler Jan 13 '15 at 20:17
4

Name the node that has the "X" text; since nodes are now named, you can use those names to add the arrow using a simple \draw operation; the out and in keys to the to operation can give you the curved arrow (bend would be another option here) and using an extra \node you can add the label (as part of the \node text or using the label key). Here's an example, showing three possibilities (adjust the settings according to your needs):

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

\begin{document}

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

  \node [venn circle = red] (A) at (0,0) {$cognitive$};
  \node [venn circle = blue] (B) at (60:4cm) {$linguistics$};
  \node [venn circle = green] (C) at (0:4cm) {$childhood$};
  \node[left] at (barycentric cs:A=1/2,B=1/2 ) {}; 
  \node[below] at (barycentric cs:A=1/2,C=1/2 ) {};   
  \node[right] at (barycentric cs:B=1/2,C=1/2 ) {};   
  \node[below] at (barycentric cs:A=1/3,B=1/3,C=1/3 ) (endpoint) {X};
  \draw[->] 
    ([yshift=-20pt]A.south) node[anchor=east] {some text} 
    to[out=0,in=270] 
    (endpoint.south);
  \draw[->] 
    ( [yshift=-20pt] $ (A.south)!0.5!(C.south) $ ) node[anchor=north] {some other text}
    to[bend right,looseness=2] 
    (endpoint.south east);
  \node at ([yshift=-15pt]C.south) (textbelow) {yet another text};
  \draw[->] 
    (textbelow.north)
    to[out=90,in=0] 
    (endpoint.east);
\end{tikzpicture}

\end{document}

enter image description here

I added text opacity=1 to your style so the text is not transparent (this is optional).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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