4

Given a graph like the one on the right side of the picture below, I want to draw a ribbon graph (that is, a "thickened" version of the graph) like the one on the left.

I already drew the graph using Bézier curves but I don't think the best way to approach the ribbon graph would be using Bézier curves. How could I do it?

Below we have my drawing of the graph:

\begin{tikzpicture}
\useasboundingbox (-2,-2) rectangle (2,2.5);
\begin{scope}[very thick,decoration={
markings,
mark=at position 0.3 with {\arrow{>}}}
] 
\draw[ultra thick,postaction={decorate}] (0,0) .. controls +(60:3) and +(120:3) .. (0,0);
\draw[ultra thick,postaction={decorate}] (0,0) .. controls +(-60:3) and +(-120:3) .. (0,0);
\end{scope}
\begin{scope}[very thick,decoration={
markings,
mark=at position 0.5 with {\arrow{>}}}
] 
\draw[ultra thick,postaction={decorate}] (0,0) -- (-1,0) .. controls +(180:1) and +(180:2) .. (0,2.5)
                                                    .. controls +(0:2) and +(0:1) .. (1,0) -- (0,0);
\end{scope}
\fill[fill=black] (0,0) circle (3pt);
\end{tikzpicture}

  • Just draw the background as usual. – The old JouleV Apr 20 at 15:21
  • 1
    @JouleV what do you mean? Using Bézier curves? – Gabriel Apr 20 at 15:24
  • Yeah! Just draw some other Bezier curves, or whatever curves you want, and use some \fill commands for color filling. – The old JouleV Apr 20 at 15:26
  • 1
    That's surely possible. However that seems insanely time consuming to me. I wonder if there is a better way to approach this. – Gabriel Apr 20 at 15:30
6

I do not know if it is time consuming to draw this. For me it would be probably more time-consuming to try to understand the abstract question behind this. If there is a clear, general question, please let me now, otherwise you may want to look at

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}[insert arrow/.style={decoration={
markings,
mark=at position 0.3 with {\arrow{>}}}}]
\useasboundingbox (-2,-2) rectangle (2,2.5);
\draw[fill=gray!20] (0,1) + (-40:2) arc(-40:220:2) to[out=-50,in=45] (200:1)
arc(135:405:1.3) to[out=135,in=-140] cycle;
\begin{scope}[very thick,insert arrow=0.3] 
\draw[ultra thick,postaction={decorate}] (0,0) .. controls +(60:3) and +(120:3) .. (0,0);
\draw[ultra thick,postaction={decorate}] (0,0) .. controls +(-60:3) and +(-120:3) .. (0,0);
\end{scope}
\begin{scope}[very thick,insert arrow=0.5] 
\draw[ultra thick,postaction={decorate}] (0,0) -- (-1,0) .. controls +(180:1) and +(180:2) .. (0,2.5)
                                                    .. controls +(0:2) and +(0:1) .. (1,0) -- (0,0);
\end{scope}
\fill[fill=black] (0,0) circle (3pt);
\draw[fill=white] (0,1.2)+(-30:1.1) arc(-30:210:1.1) to[out=-60,in=-60,looseness=2] ++(0.1,0)
arc(210:-30:0.985) to[out=-120,in=-120,looseness=2] cycle;
\end{tikzpicture}
\end{document}

enter image description here

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.