Skip to content

Air Quality

Air quality metrics for major world cities: particulate matter, nitrogen dioxide, ozone, and AQI.

import polars as pl
import polarise
from polarise.datasets import get_air_quality_data
df = get_air_quality_data()

AQI gradient

{ cmap="CET_D12" · built-in or colorcet }

(df.style()
   .gradient("AQI", cmap="CET_D12")
   .fashion_minimal()
   .title("Air Quality Index by City")
   .show()
 )
Air Quality Index by City
City PM2_5 NO2 O3 AQI Change_vs_2015
Paris 13.2 38.4 52.6 48 -5.2
Berlin 11.8 26.1 48.2 42 -3.8
Madrid 9.5 31.7 61.3 53 1.2
Rome 15.7 42.3 55.1 58 -2.1
London 12.1 35.8 44.8 45 -4.5

WHO limit exceedances

(df.style()
   .highlight_above("PM2_5", value=25.0, fill="#FF6347")
   .highlight_above("NO2", value=40.0, fill="orange")
   .fashion_grid()
   .title("Pollutants Exceeding WHO Limits")
   .footnote("WHO limit: PM2.5 < 25 μg/m³, NO2 < 40 μg/m³")
   .show()
 )
Pollutants Exceeding WHO Limits
City PM2_5 NO2 O3 AQI Change_vs_2015
Paris 13.2 38.4 52.6 48 -5.2
Berlin 11.8 26.1 48.2 42 -3.8
Madrid 9.5 31.7 61.3 53 1.2
Rome 15.7 42.3 55.1 58 -2.1
London 12.1 35.8 44.8 45 -4.5
WHO limit: PM2.5 < 25 μg/m³, NO2 < 40 μg/m³

Change since 2015

{ cmap="managua_r" · built-in or cmcrameri }

(df.style()
   .gradient_divergent("Change_vs_2015", center=5.0, cmap="managua_r")
   .bar("AQI", fill="lightgreen")
   .fashion_zebra()
   .title("Air Quality Change Since 2015")
   .show()
 )
Air Quality Change Since 2015
City PM2_5 NO2 O3 AQI Change_vs_2015
Paris 13.2 38.4 52.6 48 -5.2
Berlin 11.8 26.1 48.2 42 -3.8
Madrid 9.5 31.7 61.3 53 1.2
Rome 15.7 42.3 55.1 58 -2.1
London 12.1 35.8 44.8 45 -4.5