[Python] Customizing tooltip font in altair

Discussão em 'Python' iniciado por Stack, Fevereiro 9, 2025.

  1. Stack

    Stack Membro Participativo

    I'm using Altair to create an interactive stream graph and want to customize the tooltip font, but I can't figure out how to do it.

    I've successfully set fonts in the graph using .configure_axis(), .configure_legend(), and .configure_title(), but these don't cover tooltips, and I can't seem to find directions in the documentation.

    Any help would be greatly appreciated!

    import altair as alt
    import pandas as pd
    import numpy as np

    # Sample data
    np.random.seed(42)
    years = list(range(2000, 2020))
    destinations = ["USA", "Canada", "Germany", "Australia", "UK"]
    data = []

    for year in years:
    for dest in destinations:
    data.append({"year": year, "destination": dest, "value": np.random.randint(1000, 10000)})

    # Create the DF
    flow_data_aggregated = pd.DataFrame(data)

    # Create the interactive selection
    selection = alt.selection_multi(fields=["destination"], bind="legend", toggle=True)

    # Create the graph
    stream_graph = alt.Chart(flow_data_aggregated).mark_area(
    interpolate="basis",
    opacity=0.85
    ).encode(
    x=alt.X("year:O", title="Year", axis=alt.Axis(ticks=False, labelAngle=0, domain=False, grid=False)),
    y=alt.Y("value:Q", stack="center", title="Population Size", axis=None),
    color=alt.Color("destination:N", legend=alt.Legend(title="Destination")), # No scale → Uses default colors
    opacity=alt.condition(selection, alt.value(1), alt.value(0.1)),
    tooltip=[
    alt.Tooltip("year:O", title="Year"),
    alt.Tooltip("destination:N", title="Country"),
    alt.Tooltip("value:Q", title="Pop Size", format=",.0f")
    ]
    ).add_selection(selection).properties(
    width=1000,
    height=500,
    title="",
    background="white"
    ).configure_view(
    strokeWidth=0
    ).configure_axis(
    labelFont="Merriweather",
    labelFontSize=12,
    titleFont="Merriweather",
    titleFontSize=14,
    gridColor="lightgray"
    ).configure_legend(
    labelFont="Merriweather",
    labelFontSize=12,
    titleFont="Merriweather",
    titleFontSize=14,
    orient="bottom",
    direction="horizontal"
    ).configure_title(
    font="Merriweather",
    fontSize=16,
    color="darkblue",
    anchor="middle"
    ).interactive()

    # Save as HTML
    html_filename = "stream_graph_example.html"
    stream_graph.save(html_filename)

    Continue reading...

Compartilhe esta Página