2015 Bird Watching Recap

Life List Graph
Figure 1 Annual North American totals for bird species, lifers (species not previously observed), and checklists (observations from a specific location and time).

Like my first recap I had intended to post this sometime in January. This year I wanted to streamline my process from the kludgey mess I had been using. I’ve been successful in moving most of the data processing into R, but it did take a while. I’m now able to parse the csv from eBird containing my observations and extract the relevant information. I can then create year, and locations lists using dplyr. This information can then be used to generate graphs, html tables using xtable, or kml files using plotKML. The process is not live updating but for that to work this code would probably need to be ported into MySQL and I would probably need API access from eBird to my own observations. I’m also having an issue with each point in my exported KML file having their own individual style, which then requires some editing in Google Earth. I then still need to manually add it to My Maps before I can embed it on a webpage. I’d welcome any suggestions here for streamlining. If anyone is interested you can find a copy of my R code here.


Figure 2 Map showing the geographic distribution of birding locations from 2015. These locations are mainly clustered within the Lower Mainland.

After crunching the data it seems like I birded even more in 2015 than last year with my North American (north of Mexico) total falling just 1 bird shy of my 245 record in 2014 (Fig. 1). While most of my birding was localized in Metro Vancouver, I did manage to bird in 5 states and three provinces (Fig. 2). Sara & I took an epic road trip through Alberta, Montana, Wyoming, Idaho, Oregon & Washington, which helped bump up my dwindling numbers of lifers. I also got to do a little birding in Montréal when I visited there for the ESC meeting there in November. I think the birding highlights for me this year were completing my set of North American grebes with my lifer Clark’s Grebe, and finishing my hatch trick with my first Pygmy Nuthatch.

ebird top 100
Figure 3 Top 100 year totals for Metro Vancouver in 2013-2015. The lighter bars and colored arrows indicate my rank.

As already mentioned the majority of my birding happened in and around Metro Vancouver where I racked up 204 species in 2015. This shatters my record 2013 list by 10 species. Unfortunately for my eBird ranking everyone else seemed to also have a really good year (Fig. 3). As a result even through my year total was higher I dropped in rank from 21 to 23. This graph let me play around with scraping data from webpages with Rvest (see R code for details) which was a lot fun.

Spp by Checklist
Figure 4 Accumulation of new species with each checklist over the year. Each point indicates a checklist. The light blue areas approximate the spring and fall migratory periods. To make the years more comparable the graph is limited to checklists from Metro Vancouver.

When I was drilling down into my data I was curious about the relationship between effort (# of checklists) and the number of species observed. I was originally going to graph it like a species area curve but I found that mapping species number against Julian date presented additional context while still showing the classic power relationship between number of species and effort. Presenting the data this way made periods with little birding (like Oct of this year where I was preparing for a conference) or big days (like Feb 22, 2015) very visible. It also nicely illustrates the greater rate of species gain during the migratory period. Parsing the data to generate the curves was a fun challenge made fun use of lapply, subsetting and vector indexes (see R code for details).

So here’s hoping this combination of bird watching and R coding minutia is relevant to someone. I certainly had fun working on my process (even though it took so long) and I think I added some tools to my R toolbox in the process. There is always room for improvement though and I already have a few enhancements in mind, like adding family & order headings to my lists using some code from this guide by Sebastián Pardo. It also sure would be great if there was someway to access your personal eBird data via the API (probably a huge privacy headache in there somewhere though).

Leave a Comment