We wanted to develop some tools that would allow us, and the wider community, the ability to answer questions about the air quality in an area. Things like: how many times does it breach the WHO guidelines? When is the air quality good or bad - mornings? evenings? weekends? And finally, is it getting better or worse? A few weeks ago we shared some prototype visualisations we have been working on in ObservableHQ and think we’re nearly there with tools that will answer these questions.
Unfortunately as our node still hasn’t been installed, we’ll answer these questions for a nearby node, at Stockwell Primary School.
Breaching limits
There are different time windows for measuring pollutants - for instance daily and annual averages - and the WHO and DEFRA have their own limits. We will be focusing on the WHO guidelines, which for PM2.5 and NO2 define daily limits and annual limits.
The WHO guidelines for PM2.5 daily limits state that the 24-hour average concentrations should not exceed 15 µg/m³ more than 3 - 4 days per year and 24-hour average Nitrogen dioxide (NO2) concentrations should not exceed 25 µg/m³. And so, how does Stockwell Primary School do? Spoiler alert: not very well.
The graphs above show the available Breathe London data for this node year to date (to 1 June 2023). In this period there were 40 daily breaches of PM2.5 concentrations (left), compared with the limit of 3 - 4 breaches. And the NO2 chart (right) paints an even grubbier picture, with a huge number of daily breaches of the WHO NO2 guidelines.
Daily variations
Before we go any further, we need to highlight something in the prototype visualisations: the classic graph doesn’t start at zero issue. While it can be useful in some cases to show small changes on a large baseline, it’s also a great way to manipulate data like if you worked for Fox News.
In the heatmaps above, where blue is better and yellow is worse, the air quality looks pretty good in the middle of the day. A lovely pool of clean cool blue that you could dip your toes into. But look at the scale: for the NO2 heatmap on the right, it only starts at 20 µg/m³, nearly at the WHO daily limit already!
Setting the scales to start at zero shows a different picture. The heatmaps below are for the same period as above, but now the difference between the middle of the day and the rush hours are much less pronounced.
One nice thing about the tool is that it is interactive: you can select areas of interest in the daily breach graphs and you can see the hourly and daily variations that lead to the breach.
What’s next?
We still don’t have a good way of answering the question “is the air quality getting better or worse?”. A rolling annual average could be helpful: it would factor in seasonality, but as the Breathe London project is fairly new, a lot of nodes don’t have enough data to generate these. We’ll look for other sources of data to cover this further in future. Within the Breathe London community we have a regular catchup on data visualisation and so we hope to get some ideas from our fellow Breathe Londoners.
The other thing we need to sort out is access to ObservableHQ notebook. To access the data it uses an API key that we got by registering for access. If we make my ObservableHQ notebook public then our API key will be publicly accessible too. But even if we produce a copy of the notebook without the API key and that says <insert API key here>
in it, unless you have a paid-for plan, that notebook will be public, and you’ll end up leaking your key too.
And finally, the team that built D3.js has released a plot library called Observable Plot. It looks really interesting and we have started experimenting with it. We hope to bring you some more visualisations soon using Observable Plot.
We’re sure there are solutions to these problems and we’ll keep tinkering away until we’ve got a set of tools that the whole community can use to view and analyse their air quality information.