Style Altair Plots#

This guide addresses how to style Altair plots displayed using the Vega pane.

You can select the theme of Altair plots using altair.themes.enable and an accent color using the configure_mark method. The list of themes is available via altair.themes.names().

The gif below displays an example of what can be achieved with a little styling of the Altair plot and the FastListTemplate.

VegaAltairStyle.gif

An Altair plot with custom theme and accent color#

In this example we will give the Altair plot a custom theme and accent color.

import altair as alt
import panel as pn

from vega_datasets import data

pn.extension("vega")

def plot(theme, color):
    alt.theme.enable(theme)

    return (
        alt.Chart(data.cars())
        .mark_circle(size=200)
        .encode(
            x='Horsepower:Q',
            y='Miles_per_Gallon:Q',
            tooltip=["Name", "Origin", "Horsepower", "Miles_per_Gallon"],
        )
        .configure_mark(
            color=color
        )
        .properties(
            height=300,
            width="container",
        )
        .interactive()
    )

themes = sorted(alt.theme.names())
theme = pn.widgets.Select(value="dark", options=themes, name="Theme")
color = pn.widgets.ColorPicker(value="#F08080", name="Color")

pn.Column(
    pn.Row(theme, color),
    pn.pane.Vega(pn.bind(plot, theme=theme, color=color), height=350, sizing_mode="stretch_width"),
    "**Altair Themes**: " + ", ".join(themes),
    styles={"border": "1px solid lightgray"}
).servable()

Please note that the line alt.theme.enable(theme) will set the theme of all future generated plots unless you specifically change it before usage in a Vega pane.