Plots
Plotting
check_dependencies()
marimo supports several popular plotting libraries, including matplotlib, plotly, seaborn, and altair.
This tutorial gives examples using matplotlib; other libraries are used similarly. ## Matplotlib To show a plot, include it in the last expression of a cell (just like any other output).
# create the plot in the last line of the cell
import matplotlib.pyplot as plt
plt.plot([1, 2])
1, 2]) plt.plot([
# create a plot
plt.plot([1, 2])
# ... do some work ...
# make plt.gca() the last line of the cell
plt.gca()
1, 2])
plt.plot([# ... do some work ...
# make plt.gca() the last line of the cell
plt.gca()
mo.accordion(plt_show_explainer)
A new figure every cell. Every cell starts with an empty figure for the imperative pyplot
API.
= np.linspace(start=-4, stop=4, num=100, dtype=float) x
plt.plot(x, x)**2)
plt.plot(x, x plt.gca()
**3) plt.plot(x, x
To build a figure over multiple cells, use the object-oriented API and create your own axis:
= plt.subplots()
_, axis
axis.plot(x, x)**2)
axis.plot(x, x axis
**3)
axis.plot(x, x axis
Draw plots interactively
Draw plots interactively by parametrizing them with UI elements.
= mo.ui.slider(1, 5, value=1, step=1, label='exponent')
exponent
mo.md(f"""
**Visualizing powers.**
{exponent}
"""
)
@mo.cache
def plot_power(exponent):
**exponent)
plt.plot(x, xreturn plt.gca()
= (
_tex f"$$f(x) = x^{exponent.value}$$" if exponent.value > 1 else "$$f(x) = x$$"
)
mo.md(f"""
{_tex}
{mo.as_html(plot_power(exponent.value))}
"""
)
Other libraries
marimo also supports these other plotting libraries:
- Plotly
- Seaborn
- Altair
Just output their figure objects as the last expression of a cell, or embed them in markdown with mo.as_html
.
If you would like another library to be integrated into marimo, please get in touch.
= mo.md(
module_not_found_explainer """
## Oops!
It looks like you're missing a package that this tutorial
requires.
Use the package manager panel on the left to install **numpy** and **matplotlib**,
then restart the tutorial.
Or, if you use `uv`, open the tutorial with
```
uvx marimo tutorial plots
```
at the command line.
"""
='warn')
).callout(kind
def check_dependencies():
if missing_packages:
return module_not_found_explainer
= {
plt_show_explainer "Using `plt.show()`": """
You can use `plt.show()` or `figure.show()` to display
plots in the console area of a cell. Keep in mind that console
outputs are not shown in the app view.
"""
}
try:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
= False
missing_packages except ModuleNotFoundError:
= True
missing_packages
if not missing_packages:
'figure.figsize'] = (6, 2.4) matplotlib.rcParams[
import marimo as mo