I’ve been playing around with my eBird data this week and trying to see what interesting visualisation possibilities are in there. This post is more like an exploration of what I’ve managed to put together so far, rather than any kind of analysis.

All maps were created using Datawrapper, with base data exported from eBird and pre-processed in Google Sheets. LGA shapefiles followed ABS 2021 boundaries.

By LGA

My first goal was a fairly simple one: to replicate the eBird chloropleth map.

Every eBird profile has a regional map on it – this is mine. The region displayed is customisable, and by default it colours each sub-region according to the number of unique species seen in that location, though you can also choose to display the number of checklists or the number of species photographed in each sub-region. Neither of these latter maps are particularly interesting for me. I have my region set to Victoria, though when I was in the United Kingdom for a month I swapped to display England instead.

Replicating this visual was easy enough using Datawrapper, which has Australian LGA structures built into it by default.

 

I’ve adjusted the colours slightly on my version – I’ve always wanted eBird’s map to have a wider range, as I find that the mid-range values are poorly distinguished on the default scale (see, for example, Strathbogie / Mitchell in central Victoria, or Corangamite / Moyne in south west Victoria, both of which are, I think, more clearly rendered on my version). The eBird palette also leans toward a maroon at the top, which I’m not a fan of and have removed.

Using Datawrapper I was also able to produce something that eBird doesn’t have but which I’ve wanted to see for a long time. On eBird, when ‘Australia’ is selected as the region, the sub-regions are the states and territories – which makes a hierarchical sense, though I find that the areas here are so large as to be quite misleading.

Using Datawrapper, at a national scale I can instead render the counts against local government areas, which gives a much clearer picture: most of my New South Wales birding has been just across the Murray from Victoria into the Riverina, or excursions from Sydney, and to date I’ve only birded in a single Queensland LGA, the Gold Coast.

 

Visually I’d call this a success, but as a data exercise, this was a small failure.

eBird is still using the 2016 Local Government Area structure, which is considerably dated for New South Wales in particular – that same year, 19 local government area amalgamations occurred, none of which are reflected on the platform. eBird also has its own naming system for local government areas, and doesn’t provide the unique keys generated by the Australian Bureau of Statistics for its releases which could unify them. Datawrapper does have the 2016 structure as its oldest remaining visualisation option, but even with that, the lack of consistency in naming and absence of keys would have meant a lot of manual reconciliation.

Not wanting to do that, I brute-forced it, and manually entered species totals against the 2021 local government area. I know it’s inelegant, but this doesn’t need to be repeatable, so it doesn’t need to be perfect.

This does mean that there are a few LGAs in NSW here that are likely to be incorrect. Where an amalgamation occurred – Deniliquin Council (where I’ve seen 21 species) and Conargo Shire (13 species) into Edward River Council, for example – I simply took the higher of the combined LGAs and put that down. Some of these will be slightly undercounting my totals then: if I saw an Australian magpie in Conargo but not Deniliquin it would not be reflected in that combined total. For the sake of this exercise, I can live with that.

By checklist

From here, my curiosity about more accurate mapping of my birding suggested another challenge: how much more granular could I go? Local government areas, like states, are political structures. They may have some relationship to natural geography where a boundary is separated by a river, or human geography insofar as they reflect urban settlements and/or community links, but they’re never going to represent something like where a birder chooses to visit.

Fortunately, eBird exports geographic coordinates with every checklist, making finer-scale mapping possible. It’s therefore possible to generate a symbol map of locations that I have birded around Victoria, with each sized according to the number of checklists I have submitted from that location. The data includes both shared hotspots and personal locations, and both complete (travelling, stationary) and incomplete (incidental, historic) checklists.

 

(Though birding may not be tied to political geography, it’s immediately clear that it’s tied to transport geography – it’s easy to make out the Western Hwy, Calder Fwy, Goulburn Valley Hwy and Hume Fwy in my travels!)

The huge value in central Melbourne is Dights Falls, which is only a couple of minutes walk from my apartment and which I visit a few times a week on average. The symbol is so large as to completely overwhelm the rest of the area, and strengthens the case for some level of summarisation of the data and/or presentation according to more predictable shapes.

An option to do this without resorting to LGA structures is hexagonal binning, which demonstrate the density of checklists in particular areas through diversity of colour rather than diversity of size. Any of these symbol maps can be zoomed into for more precise information.

 

Hexagons are coloured according to the sum of checklists within the area. Checklist values were capped at 20+ to mitigate any skew from my most heavily-birded hotspots (Dights Falls, my home, the walk to the train station). At time of writing 50 per cent of my complete checklists submitted in Victoria (467 of 935) are from around home; setting a fixed threshold of 20+ preserves interpretability in other parts of the city and state.

Inner Melbourne is unsurprisingly my most frequent birding area. At the highest zoom level this includes both my birding around home and Yarra Bend but also Royal Park and the Royal Botanic Gardens, Wilson Reserve and Banyule Flats, and sites along the Merri Creek where I semi-regularly survey.

Two other hotspots emerge on the outskirts of the city. a cluster in the west which includes, most notably, the Western Treatment Plant and, slightly to its north, Eynesbury forest. Over in the eastern fringe is another cluster which includes Yellingbo NCA and my parents’ place on the edge of the Yarra Valley.

In the north of the state, the area around Warby-Ovens NP lights up – it’s a favourite spot and I have managed to make around four trips a year there since I started birding.

By species

It’s also possible to use the data to display not checklists submitted from each location, but an approximation of the density of species observed within each hexagon. On this map each hexagon is coloured according to the maximum number of species observed at any location within the particular area.

 

On this measure, inner Melbourne drops out of the highest bracket. South eastern Melbourne jumps up, particularly due to Braeside Wetlands. Yellingbo NCA sits at the top of the list as the hotspot in Victoria where I’ve seen the most unique species (95).

Though it’s by far the most bird-rich location in Victoria, at the Western Treatment Plant I record against different eBird hotspots for each section (T-Section, Western Lagoons, etc) and have a number of personal locations there as well, which has the effect of diluting its overall density in this presentation. For that reason – and reflecting that the density has shifted slightly to the north – it does appear that on this presentation the cluster reflects Eynesbury rather than the WTP.

Warby-Ovens NP is still obvious, and it is joined by the Winton Wetlands slightly to the west. Greater Bendigo NP also emerges as a place where I haven’t spent a lot of time, but which has tended to be rewarding whenever I have (though not on my most recent visit!).

The last thing I’ve been playing around with is displaying personal species-level geographic data. Here, for example, is a map of where I’ve recorded superb fairywrens.

 

My Victoria data has around 20,000 rows in it, but at this level of presentation that’s not enough to work with. 20,000 rows divided (very unevenly) between 305 species seen across the state; 565 records of superb fairywren, 208 of which are at Dights Falls alone… given that the median number of checklists I’ve submitted in each location is around one, the median of superb fairywrens is predictably below that. I’ve chosen not to display density data for this map; instead, each location is marked simply as either having a record or not.

This was a fun exercise. I spend so much of my time putting data into eBird but this is the first time I’ve taken it out and tried to do something with it. A few other ideas have occurred to me, first among which is to generate time series maps of my birding – where did I go and what did I see in 2023 as compared to 2025? That’s my next task.