pyfragments

Add animations to revealjs presentations from Python code-blocks.


Keywords
quarto, revealjs, presentation, fragments, animations, matplotlib
License
Other
Install
pip install pyfragments==0.4.1

Documentation

PyFragments

Add animated figures to your Quarto presentations.

Install

pip install pyfragments

Example

A Revealjs presentation created with Quarto, which displays an animated matplotlib figure:

Animated figure

This is created with the following code, in a Quarto .qmd file.

---
format: revealjs
---

## Example of an animated figure

Move to the next slide to see the transitions.

```{python}
# | output: asis
import matplotlib.pyplot as plt
from pyfragments import AnimatedFigure

with AnimatedFigure() as ani:
    plt.xlim(0, 10)
    plt.ylim(0, 10)
    for i in range(10):
        with ani.fragment():
            plt.scatter(i, i)

```

SVG example

To use SVG images, each call to a matplotlib function must include a group id (gid) with a value of .fragment.

Note: it is important to set embed-resources: true in the YAML options.

---
format: revealjs
embed-resources: true
---

# Example of an animated figure

## Animated scatterplot

Move to the next slide to see the transitions.

```{python}
from matplotlib.figure import Figure
from pyfragments.svg import animate

fig = Figure()
ax = fig.add_subplot()
for i in range(10):
    ax.scatter(i, i, gid=".fragment")
animate(fig)
```

To change the order of fragments, or make different elements appear at the same time, use .fragment-<num>:

ax.scatter(..., gid=".fragment-2")  # appears second
ax.scatter(..., gid=".fragment-1")  # appears first
ax.scatter(..., gid=".fragment-2")  # appears second

To allow animation of images, such as with ax.imshow, it is important to disable image.composite_image:

import matplotlib

matplotlib.rc("image", composite_image=False)