The annual traversing of the globe by millions of migratory birds—from one hemisphere to the other and back again—is one of the coolest and craziest feats of nature, putting our planet into perspective from an ecological point of view. But as a human down on the ground, the magnitude of this [instinctual]/[instinct-driven?] undertaking is truly incomprehensible: seeing a few flocks of geese in Vs each fall doesn’t do it justice. It seemed necessary to visualize these yearly mass migrations in order to gain and share a more comprehensive, gravity-defying appreciation of [all these awesome birds]/[these amazing animals]. Cue Processing, a Java-based prototyping language made especially for visualizing and [interactive-izing data]/[making data interactive].
Visually, I needed to account for a number of variables. At minimum: time over a year, location on the Earth, and bird species. They might also need to be manipulated by the user.
I didn’t want to visualize migration patterns that had already been identified and distilled into cleaned up models: this would be substituting a second-hand proxy for real migration events. So I’d have to find trustable data and plenty of it.
To learn how to use Processing, I built small “sketches” (Processing-speak for small, quickly made modules exploring single concepts). Each examined a different functionality available through the Processing language, such as random motion, counting, and click-functionality.
Cornell University has a very well-renowned ornithology program; they offer a platform for birdwatchers all over the world to track their sightings, including the bird’s species, bird count, date/time, and precise location pinpointed by latitude and longitude. The dataset can be filtered by species and downloaded free. At first, I was considering downloading the entire set of data for all birds ever sighted and recorded, but my computer crashed every time I tried…so I realized I’d have to choose a subset of species to represent various migration patterns.
The three aspects of data that were important to me for visualizing migration were time, location, and bird type. I made sketches of how this data could be laid out on a screen, and looking for opportunities that made sense to give the user control.
Accurately measuring miniscule changes in a mountain that is more than 5 miles up is no easy feat, but surprisingly, measurements rely on geometric formulas and surveying techniques that haven't changed all that much since the 1800s, said Peter Molnar, a geologist at the University of Colorado, Boulder.
I started with an idea of showing location on a globe that could be turned, with the circle shape the globe fit into framing the map if the user zoomed in. I also wanted the globe’s circle to act as a year-long clock, and allow the user to scrub across the length of a year at their own pace, while dots representing bird sightings moved. I played with the idea of the center of the screen acting as a search bar with a type-ahead system, which the user could look for various bird types.
My final design incorporated elements of my sketches. I decided to allow the user can turn off and on colored buttons representing 25 bird species. The clock would run continuously, visualizing progress over the course of a year. Colored dots on a flat map of the earth would visualize bird sightings, and act as a proxy for the birds’ migrations.
I started building the visualization in pieces, with one rough sketch representing each bit of functionality. After I refined each chunk of functionality individually, I worked on incorporating them into a single Processing file.
Once I pulled together all the code representing the functionality of the visualization, I started to identify repeated variables that I wanted to visually refine, such as colors and dot and button size. I made a separate files to hold the named variables’ values. This way I could quickly explore different visual treatments with a single change that affected every place that named variable occurred in the code.
After I had the functionality and interaction accounted for, I started to refine the details, like exactly which colors to use for the colored dots representing each of the 25 bird species I had selected. I wanted to use bright colors that would easily stand out against the gray background of the map. I started by evenly distributing 25 circles around the perimeter of an RGB color wheel. Some colors, like the greens, were too similar to easily distinguish visually, so I manually adjusted them. Then I assigned each of the 25 bird species to a color, trying to have a color that matched part of their plumage or alluded to their name.
I wanted to have a visual depiction of each of the bird species, to help users mentally connect the dots on the map to the animal. I decided to create illustrations rather than use photos found elsewhere, so I could incorporate some of the color of the dots representing each bird.