To teach myself TikZ, one of the things I've done is recreate interesting graphs/charts/etc. One of my bigger projects is attempting to recreate the xkcd Movie Narrative Charts comic.
Different elements of the chart probably warrant their own question, but my particular question now is how I would draw the lines in the Primer section of the chart (bottom right). I don't know if there's a good way to draw such messy, looping, interwoven paths. My solution as of now is to just use LaTeXDraw. Is that my only option here?
EDIT: I played around with some of the suggestions from the related thread linked in the comments. I liked the example from the TikZ/pgf manual that Jan Hlavacek suggested. I fiddled with the example some and I'm getting there, but some obstacles are still in my way. First, here's an example of a path I created:

Here's code that created the above. What I was aiming for was not quite a 'random' path because I wanted the path to drift in certain directions at different times. I'm sure what I've written is not the most efficient way of doing it (if you have a better way of doing it, I'd appreciate the advice, but it's not my main concern at the moment):
\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\pgfmathsetseed{1}
\begin{tikzpicture}[x=10pt,y=10pt,ultra thick,baseline,line cap=round]
\coordinate (current point) at (0,0);
\coordinate (old velocity) at (0,0);
\coordinate (new velocity) at (rand,rand);
\foreach \i in {0,1,...,15}
{
\draw[black] (current point)
.. controls ++([scale=-1]old velocity) and
++(new velocity) .. ++(1,rand)
coordinate (current point);
\coordinate (old velocity) at (new velocity);
\coordinate (new velocity) at (rand,rand);
\draw[black] (0,0)
.. controls ++([scale=-1]old velocity) and
++(new velocity) .. ++(1,rand)
coordinate (current point);
\coordinate (old velocity) at (new velocity);
\coordinate (new velocity) at (rand,rand);
}
\foreach \i in {0,1,...,15}
{
\draw[black] (current point)
.. controls ++([scale=-1]old velocity) and
++(new velocity) .. ++(rand,1)
coordinate (current point);
\coordinate (old velocity) at (new velocity);
\coordinate (new velocity) at (rand,rand);
}
\foreach \i in {0,1,...,5}
{
\draw[black] (current point)
.. controls ++([scale=-1]old velocity) and
++(new velocity) .. ++(-1,rand)
coordinate (current point);
\coordinate (old velocity) at (new velocity);
\coordinate (new velocity) at (rand,rand);
}
\foreach \i in {0,1,...,5}
{
\draw[black] (current point)
.. controls ++([scale=-1]old velocity) and
++(new velocity) .. ++(rand,-1)
coordinate (current point);
\coordinate (old velocity) at (new velocity);
\coordinate (new velocity) at (rand,rand);
}
\foreach \i in {0,1,...,15}
{
\draw[black] (current point)
.. controls ++([scale=-1]old velocity) and
++(new velocity) .. ++(1,rand-.5)
coordinate (current point);
\coordinate (old velocity) at (new velocity);
\coordinate (new velocity) at (rand,rand);
}
\end{tikzpicture}
\end{document}
Aesthetically it's still not there, but I believe all it takes now is some tweaking.
My problem now: I want to create three such paths that intertwine. I tried creating three paths within the foreach loop, but the coordinates of one path screws with the coordinates of another path in the subsequent loop -- I may just be doing something dumb. So, how would I the create image above with 3 intertwining paths instead of 1?
EDIT 2: I was able to get multiple paths working (I had just forgotten to change something after copy-pasting). Here's an example with two paths:

The code for this is below. But again, this is far from ideal, so I'm wondering if there's a better way to accomplish this (or at least make my method more efficient).
\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\pgfmathsetseed{1}
\begin{tikzpicture}[x=10pt,y=10pt,ultra thick,baseline,line cap=round]
\coordinate (current point) at (0,0);
\coordinate (current point2) at (0,10);
\coordinate (old velocity) at (0,0);
\coordinate (old velocity2) at (0,10);
\coordinate (new velocity) at (rand,rand);
\coordinate (new velocity2) at (rand,rand);
\foreach \i in {0,1,...,15}
{
\draw[black] (current point)
.. controls ++([scale=-1]old velocity) and
++(new velocity) .. ++(1,rand)
coordinate (current point);
\coordinate (old velocity) at (new velocity);
\coordinate (new velocity) at (rand,rand);
\draw[red] (current point2)
.. controls ++([scale=-1]old velocity2) and
++(new velocity2) .. ++(1,rand-.5)
coordinate (current point2);
\coordinate (old velocity2) at (new velocity2);
\coordinate (new velocity2) at (rand,rand);
}
\foreach \i in {0,1,...,15}
{
\draw[black] (current point)
.. controls ++([scale=-1]old velocity) and
++(new velocity) .. ++(rand,1)
coordinate (current point);
\coordinate (old velocity) at (new velocity);
\coordinate (new velocity) at (rand,rand);
\draw[red] (current point2)
.. controls ++([scale=-1]old velocity2) and
++(new velocity2) .. ++(1,rand+.5)
coordinate (current point2);
\coordinate (old velocity2) at (new velocity2);
\coordinate (new velocity2) at (rand,rand);
}
\end{tikzpicture}
\end{document}

