How we create Causal Diagrams

We wrote our own extension for Nikola, our static web page generator, to generate Causal Diagrams.

The basics are taken from this article. However, we modified this a bit and added more options to it. One of the mains ones is the ability to show and animate positions.

Currently, the generator can handle the following syntax:

Simple diagram

    {{% causal_diagram %}}
    3p 3 3 3 3p 3 3 3
    3p 3 3 3 3p 3 3 3
    {{% /causal_diagram %}}
    

results in:

A:RLRLRLRLB:RLRLRLRL

The jugglers are automatically labeled "A", "B", etc.

Changing the labels at each beat

	{{% causal_diagram %}}
	3 3 3 3 3
	(LR) 3 3 3 3 3
	(LLRR) 3 3 3 3 3
	(WOMBLE) 3 3 3 3 3
	{{% /causal_diagram %}}
    

Letters in parenthesis will be repeated along the pattern. These can be different for each juggler.

A:RLRLRB:LRLRLC:LLRRLD:WOMBL

Offsets and titles

	{{% causal_diagram %}}
	(RL 0) 3 3 3 3 3 3
	(LR 0.5) 3 3 3 3 3 3
	(RL 1) 3 3 3 3 3 3
	title: how to do offsets
	{{% /causal_diagram %}}
    

Offsets can be defined and a title for the whole diagram can be set:

how to do offsetsA:RLRLRLB:LRLRLRC:RLRLRL

Layout changes

To be able to make the layout a bit more compact or larger, you can change the step size between rows of jugglers and also between beats.

Note: if you make these too small, items in the graphic might overlap

Distance bewteen rows

    {{% causal_diagram %}}
    step_Y: 30
    (RL 0) 3 3 3 3 3 3
    (LR 0.5) 3 3 3 3 3 3
    (RL 1) 3 3 3 3 3 3
    title: how to change Y step size
    {{% /causal_diagram %}}
    

how to change Y step sizeA:RLRLRLB:LRLRLRC:RLRLRL

Distances between beats

    {{% causal_diagram %}}
    step_X: 30
    (RL 0) 3 3 3 3 3 3
    (LR 0.5) 3 3 3 3 3 3
    (RL 1) 3 3 3 3 3 3
    title: how to change X step size
    {{% /causal_diagram %}}
    

how to change X step sizeA:RLRLRLB:LRLRLRC:RLRLRL

Multi-person passes

	{{% causal_diagram %}}
	3b 3b 3 3 3b 3b 3 3
	3a 3a 3c 3c 3a 3a 3c 3c
	3 3 3b 3b 3 3 3b 3b
	{{% /causal_diagram %}}
    

When the pattern involves multiple jugglers, you define whom you are passing to by using 'a', 'b', etc. instead of 'p'.

A:RLRLRLRLB:RLRLRLRLC:RLRLRLRL

Bars

	{{% causal_diagram %}}
	3p 3 4p 2 3 3 3p
	3p 3 3 3p 2 3 3p
	title: An early double in 3 count
	bars:2.5,5.5
	{{% /causal_diagram %}}
    

You can add bars at certain positions to make reading the pattern easier.

An early double in 3 countA:RLRLRLRB:RLRLRLR

Lines styles

You can change the linestyle by adding certain characters at the end of a value. Allowed symbols are ",#><^*".

	{{% causal_diagram %}}
	3p> 3 3 3p^ 4, 2 3p
	3p< 3 3 3p@ 3 3 3p*
	{{% /causal_diagram %}}

    

A:RLRLRLRB:RLRLRLR

Positions (static)

You can also define positions to get a diagram of where people should stand.

    {{% causal_diagram %}}
    3p 3 3 3p 3 3
    3p 3 3 3p 3 3
    position A: -100,0,0;
    position B: +100,0,180
    {{% /causal_diagram %}}
    

A:RLRLRLB:RLRLRLAB

Positions need to be defined for each juggler for a position diagram to show up.

Once positions are defined, all passes will be animated in the diagram.

Positions are relative to a center position in the diagram. You can either specify 2 numbers as ΔX and ΔY or 3 numbers. In which case the last number is the orientation of the juggler (0=looking to the right, 180 looking to the left).

Predefined positions

For many patterns, people either stand in a line opposite each other or in a circle. You can use the following shortcuts for this:

Circle

    {{% causal_diagram %}}
    step_Y:30
    step_X:30
    3 3 3
    3 3 3
    3 3 3
    3 3 3
    3 3 3
    3 3 3

    positions: circle
    {{% /causal_diagram %}}
    

A:RLRB:RLRC:RLRD:RLRE:RLRF:RLRABCDEF

Line

    {{% causal_diagram %}}
    step_Y:30
    step_X:30
    3 3 3
    3 3 3
    3 3 3
    3 3 3
    3 3 3
    3 3 3

    positions: line
    {{% /causal_diagram %}}
    

A:RLRB:RLRC:RLRD:RLRE:RLRF:RLRABCDEF

Positions (walking)

You can also define walking patterns.

    {{% causal_diagram %}}
    3d 3 3 3 3 3
    3c 3 3 3 3 3
    3a 3 3 3 3 3
    3b 3 3 3 3 3
    title: Y (walking, 6 count)
    position A: 0,-100,0,0;      6,-200,+100,0;   12,-300,0,0;     18,-200,-100,0;   24,-100,0,0;
    position B: 0,-300,0,0;      6,-200,-100,0;   12,-100,0,0;     18,-200,+100,0;   24,-300,0,0;
    position C: 0,+200,100,180;  6,+100,0,180;    12,200,-100,180; 18,+300,0,180;    24,200,100,180;
    position D: 0,+200,-100,180; 6,+300,0,180;    12,200,+100,180; 18,+100,0,180;    24,200,-100,180;
    {{% /causal_diagram %}}
    

Y (walking, 6 count)A:RLRLRLB:RLRLRLC:RLRLRLD:RLRLRLABCD

In this case you need to always specify 4 values and specify multiple positions that are separated by ";".

The first number now specifies a time step. The last time step should be the same for every juggler. If the number of time steps is larger than the number of beats in the diagram. The pattern will just repeat. However the largest time step should be a multiple of the number of beats in the pattern.

Note that the number of positions for each juggler can vary.

Currently, the last position should be the same as the first to achieve a smooth pattern.

Formatting

Comments

You can leave comments in the code starting with #

    {{% causal_diagram %}}
    step_Y:30  # an inline comment
    step_X:30
    3 3 3
    3 3 3
    3 3 3
    3 3 3
    3 3 3
    3 3 3
	# a comment on its own line

    positions: line
    {{% /causal_diagram %}}
    

Continuation lines

If lines get too long, you can break them up into multiple lines by using the '\' character at the end.

    {{% causal_diagram %}}
    3d 3 3 3 3 3
    3c 3 3 3 3 3
    3a 3 3 3 3 3
    3b 3 3 3 3 3
    title: Y (walking, 6 count)
    position A: 0,-100,0,0;     \
                6,-200,+100,0;  \
                12,-300,0,0;    \
                18,-200,-100,0; \
                24,-100,0,0;
    position B: 0,-300,0,0;      6,-200,-100,0;   12,-100,0,0;     18,-200,+100,0;   24,-300,0,0;
    position C: 0,+200,100,180;  6,+100,0,180;    12,200,-100,180; 18,+300,0,180;    24,200,100,180;
    position D: 0,+200,-100,180; 6,+300,0,180;    12,200,+100,180; 18,+100,0,180;    24,200,-100,180;
    {{% /causal_diagram %}}