2

This is the figure I hope to draw in Tikz. enter image description here

I need to draw 4 components.

  1. Two Banana-like objects facing each other.
  2. Two curves with a certain curvature connecting the two Banana-like objects
  3. A circle, placed at a certain location.
  4. An arrow connecting the bottom of the circle and passes through one of the curve.

I can figure out how to draw 3 and 4 myself, but not in perfect coordinate as I don't know how to set up 1. But I really need some helps or hints on how to draw 1 (especially) and 2. Thank you very much.

  • In future, it would be really helpful if you could post the code for the bits you can do. That allows people to focus just on the bits you need help with and also helps to ensure that their suggestions work with what you already have. (That is, you are more likely to get answers and you are more likely to get useful answers ;).) – cfr Jul 3 '15 at 23:43
  • No problem! It takes a while to get used to this place ;). – cfr Jul 4 '15 at 1:24
7

Updated version

I just noticed that the filling for the bananas is done using different shades of gray:

enter image description here

The code:

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[>=latex]
\coordinate (A) at (0,0) ;
\coordinate (B) at (0,-5) ;
\coordinate (C) at (4,0) ;
\coordinate (D) at (4,-5) ;

\filldraw[top color=gray!20,bottom color=gray!70,middle color=gray!30]
  % the banana to the left
 (A) to[out=-110,in=110] 
   coordinate[pos=0.07] (auxlu)
   coordinate[pos=0.93] (auxll)
 (B) to[out=140,in=-140] 
 (A);
  % the banana to the right
\filldraw[top color=gray!70,bottom color=gray!20,middle color=gray!30] (C) to[out=-70,in=70] 
   coordinate[pos=0.07] (auxru)
   coordinate[pos=0.93] (auxrl)
 (D) to[out=40,in=-40] 
 (C);
\draw[thick,looseness=1.3] 
% the upper curve
  (auxlu) to[bend right] (auxru) 
% the lower curve
  (auxll) to[bend left] (auxrl); 
% the circle
\node[circle,draw=green!60!black,inner sep=0.5cm] 
  at (1.2,-2.5) (circle) {};   
% the arrow
\draw[<->,thick]
  (circle.south) -- ++(-45:3cm);
\end{tikzpicture}

\end{document}

Initial version

The code (with explanatory comments):

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[>=latex]
\coordinate (A) at (0,0) ;
\coordinate (B) at (0,-5) ;
\coordinate (C) at (4,0) ;
\coordinate (D) at (4,-5) ;

\filldraw[fill=gray!20]
  % the banana to the left
 (A) to[out=-100,in=100] 
   coordinate[pos=0.05] (auxlu)
   coordinate[pos=0.95] (auxll)
 (B) to[out=120,in=-120] 
 (A)
  % the banana to the right
 (C) to[out=-80,in=80] 
   coordinate[pos=0.05] (auxru)
   coordinate[pos=0.95] (auxrl)
 (D) to[out=60,in=-60] 
 (C);
% the upper curve
\draw 
  (auxlu) to[bend right] (auxru); 
% the lower curve
\draw 
  (auxll) to[bend left] (auxrl); 
% the circle
\node[circle,draw=green,inner sep=0.5cm] 
  at (1.8,-2.5) (circle) {};   
% the arrow
\draw[<->]
  (circle.south) -- ++(-45:3cm);
\end{tikzpicture}

\end{document}

Remarks

  • For the "banana" shaped figures, the out=, in= operations.

  • For the curved paths the bend operation (the out=, in= operations could also have been used).

  • The bend cirves are drawn by joining some auxiliary coordinates placed upon the inner path for the "bananas" with the help of pos=.

  • The circle is a \node with circle shape.

  • The arrow was drawn using the anchors for the node.

  • Thank you very much for your great help and remarks on how to draw shapes and curves and the use of auxiliary coordinates. – Ka-Wa Yip Jul 4 '15 at 0:25
  • @kwy You're welcome. Glad I could help. – Gonzalo Medina Jul 4 '15 at 0:33

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.