Skip to content Skip to sidebar Skip to footer

Dynamic Name In Altair Alt.condition

I am following this example to create a bar chart with conditional color formatting on negative values: import altair as alt from vega_datasets import data source = data.us_emplo

Solution 1:

Python provides a getattr function that lets you get a dynamic attribute from any Python object, so you could use getattr(alt.datum, col_name) to get a dynamic column name from the alt.datum object.

But it's probably easier to specify your filter condition as a string directly; something like this (which makes use of f-strings):

import altair as alt
from vega_datasets import data

def plot_column(col_name: str) -> alt.Chart:
    source = data.us_employment()

    return alt.Chart(source).mark_bar().encode(
      x="month:T",
      y=f"{col_name}:Q",
      color=alt.condition(
          f"datum.{col_name} > 0",
          alt.value("steelblue"),  # The positive color
          alt.value("orange")  # The negative color
      )
    ).properties(width=600)

plot_column("nonfarm_change")

enter image description here

Post a Comment for "Dynamic Name In Altair Alt.condition"