Back to all projects

Worldly Birds

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].



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.

The “99” sketch illustrates the number 99 by generating a random number between 1 and 99. If, once converted from float to integer, it is less than 99, it will keep the background color the same, but if it is the integer 99, it will change the background color. Also, the program runs at a frame rate of 99 refreshes per second. So, theoretically, the background should change about every one second on average. The middle sketch is a timer counting down finals week, and portraits of my various finals week-related emotions flash randomly. As the timer fills with “sand” the chances that a panic-stricken portrait will be flashed increases. The ladybug sketch explores interactivity, with a click on each of the ladybug’s dots changing the pattern of its shell.

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.

This is a small sampling of the data for albatrosses alone. There’s a lot of metadata, but once I had my design somewhat planned, I cleaned the data by deleting the columns of everything except the species, date, and location in latitude and longitude.

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.

I started with very rough sketches trying to get the basic functionality established before refining the visual designs and pulling the pieces together. These are early sketches exploring the button-click functionality, the clock, and the dots representing location that change over time.

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.

I wrote one large primary code file, which references two other tabs holding named variables; one for colors and sizes, and another for content.

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.

I wanted to use a geometric style to keep the illustrations simple, but I still needed each bird to be recognizable by its signature colors, posture, or behavior. Photos helped me ensure I was capturing these aspects, and I overlaid circles and lines to create more simplified silhouettes.