My Year in Data: a Visual Reflection on 2019
By: Benjamin Cooley
Tags: Design, JavaScript, Data, Data Visualization, Creative Coding

If you lurk in the shadows of the data viz world, you’re no doubt familiar with this kind of exercise. Health and productivity apps offer more ways to track daily data than ever before. As people naturally obsessed with quantifying, many data visualization practitioners have used it as an exercise in reflection.

This was my 2019. It was the first year I decided to intentionally track activities like working out, computer productivity, and listening to music. Most notably, I was inspired by the legendary Feltron reports. But at the time of starting this project, I was also still riding high off my recent foray into creative coding during the annual Codevember challenge. So I wanted an opportunity to focus my experience with Javascript back to data visualization and to push it’s limits into creating non-traditional charts and visualizations. I also wanted to embark on a more personal exploration of my data.

Here’s how I did it (as well as some tips towards the end on how to do one yourself!).

Data tracking

It’s frankly scary how much data you can download about yourself without even trying. For example, you can request things like location data and daily steps with Google Takeout. But I also wanted to be able to track other things that aren’t as passive. If you own a smartphone, odds are that your steps are being tracked through some native health app (Google Fit or Apple Health, most likely). But if you want to track details for running or cycling, you are better off using something like Strava, which you have to “start” and “stop” at the end of each workout.

The Gyroscope desktop dashboard.

My central tracking app was Gyroscope. It’s a quantified self app that will aggregate data from multiple sources into one place. Even better, since it’s a small startup that is committed to privacy, they also have a dedicated data export page to download a csv file of your data for any category at any time. There are a few specific apps that I used to track other things, all of which fed into Gyroscope:

Strava : running, cycling, hiking, other workouts

: running, cycling, hiking, other workouts Last.fm : integrates with Spotify to passively track listening history

: integrates with Spotify to passively track listening history Google Fit : steps

: steps RescueTime: desktop app to track app usage on my laptop

My system wasn’t perfect though. I still had to remember to track a workout before I started, which didn’t always happen. I also use multiple computers (work and personal), which ended up skewing my productivity data as well. My step data didn’t truly start until March, so I had to do some backfilling with averages to fill in the gaps. But overall I was happy with the amount of data I collected.

You’ll notice that location is missing from my list. This was both an intentional and unintentional choice: I can download my location data (and have) but I didn’t want to dive down that rabbit hole for this first year. Maybe next time.

Analysis

While I could have done this in a cleaner way, I ended up tidying up my data in Google Sheets. Making pivot tables helps to total up distances per day and also to format things like numbers, strings, and dates.

Doing some light analysis allowed me to pull out interesting stats like this for each sketch (shown bottom right). This viz shows all of my tracked physical activity last year. View the full version here.

I also used pivot tables to quickly find things like averages, totals, outliers, etc. for each topic. The smarter, more responsible version of myself would have wrote a Python script to do this instead so I can use it again next year. But hey, sometimes you’re just in the zone and you forget to be an efficient human. Maybe next time.

Design

Most of my designs ended up relying on circular concepts, since a year by natures takes a circular form. Radial shapes felt evocative of the circular nature of seasons and the passing of time.

When I didn’t use a radial shape I also tried to include circles and bubbles as a way to evoke a “point” in time. Each of my datasets was by definition a timeline, so I wanted to retain this feeling throughout.

A snippet of my “Year of Running” viz. Full version.

These posters favor reflection and expression over precision, but each still has a legend for how to compare values. You’ll also notice that many circles overlap. I could have used a smaller total scale for each circle to make individual event (circle) easier to see. But for this project I was less interested in seeing individual events, and more interested in overall patterns.

For example, when I moved to Boston I started biking to work every day. So the fact that there are tons of dark blue dots for the “Workouts” viz, all in a row at the same size, isn’t particularly interesting. That’s just my work commute. What is interesting however, is the giant blue circle in July (my long distance ride to Walden Pond).

I wanted to incorporate a vibrant color scheme and to play with inverted shading as a way of categorizing activities. In the “Workouts” viz, each color represents a different activity, but when the acitivty is explored in depth (like “Running” above) this color becomes the background.

Although it goes against my usual workflow, I actually didn’t start with any sketches before I began designing and coding. I felt comfortable enough with creating graphics using p5.js that I started prototyping with the data straight away. I wouldn’t usually recommend this, but I actually found it helpful to use “real” data right from the start instead of sketching on paper without any data.

Code

Every poster is made using p5.js. No touch-ups in Illustrator. I’m not gonna lie, this ended up being a real pain in the ass a few times, but I’m pleased that I pushed through and stuck to code-only for this project. This was a personal challenge to brush up on my Javascript, but also a bit of a statement: coders can design and designers can code. Don’t let your lack of tool-specific knowledge stop you from making something great.

You can take a look at the code for each sketch in this repo (sorry for the parts that are a bit of a mess). It’s hacky in a few places, but it works!

This project reinforced my new love for the p5.js graphics library. It also gave me new ideas for how to use it. Despite not having the same interactive capabilities as a library like d3.js, p5 holds enormous opportunity for creative data visualization and nontraditional methods of graphicacy. And the learning curve is much less steep than something like d3.

Learnings

After diving into my data from last year, I started to realize all the other things I could have been tracking. Location, for example, would have been a great one to keep a more annotated log of rather than the massive Google Takeout data dump.

Sleep is another notable area that would be great to track, but I don’t have an Apple Watch or similar to do so right now. I also would like to track my reading through Goodreads, which I do currently but my reading last year was failry substandard … not a lot of data to viz from 2019. This year will be different though!

I also got the chance to reflect on certain peaks and troughs in the patterns that emerged from my data. None of these were surprising per se, but instead acted as a memory-booster. Similar to how a photograph can jog your memory of a recent vacation, I found that these visualizations took me back to memories of activity through each season, high and low.

Why did my physical activity spike so much after May? Probably because I moved from the massive urban city of London to the smaller, more balanced Somerville just outside of Boston. There’s also a state park close to where I live. Good sign for the move.

Why was I running so much in August? I think I had just gotten some new running shoes, so was feeling particularly motivated. The days were really long too, but once winter came it got harder. Does that make me a “fair-weather” runner? Perhaps. Maybe I should try to make running more part of my routine by run-commuting to work.

The questions and answers go on. And if I never would have started this side project, the data would have sat in databases and never really meant anything to me.

I learned that visualizing personal data can be both a creative and personal challenge. You confront certain patterns that defined your year, whether you meant to develop them or not. And then you have a choice for next year: How will my 2020 visualizations look in comparison?

Next year I look forward to seeing how my data has changed and what new types of data I may be generating. After completing this first year, here are my top tips for anyone interested in analyzing their own activity data:

Automate as much as possible: You will forget to track things—it’s inevitable. So as much as possible, use services like Gyroscope or a tool like IFTTT to automate data storage when possible

You will forget to track things—it’s inevitable. So as much as possible, use services like Gyroscope or a tool like IFTTT to automate data storage when possible Analyze your data before you start designing: If you know where the interesting patterns lie, you can design a visualization that highlights this point.

If you know where the interesting patterns lie, you can design a visualization that highlights this point. It’s ok to start late: My step tracking was all over the place for the first part of the year, for various technical reasons. But after analyzing my totals, it was clear that my daily numbers were fairly consistent. So I wrote an averaging function with a confidence interval of +/- 2000 steps and generated the data myself. The viz was still informative, even if only nine out of 12 months were “real” data.

My step tracking was all over the place for the first part of the year, for various technical reasons. But after analyzing my totals, it was clear that my daily numbers were fairly consistent. So I wrote an averaging function with a confidence interval of +/- 2000 steps and generated the data myself. The viz was still informative, even if only nine out of 12 months were “real” data. Keep asking why: maybe you had a few low months of activity in a row. Or maybe you had a strong start to the year, but then lost steam. Why? The answer might help to plan more realistic goals for next year, or to make a lifestyle change to change the future pattern.

I have never been one for New Year’s Resolutions, but this has got to be my closest effort to make one. Instead of letting tech companies harvest all the value from my data, I now hope to continue extracting some meaning for myself—to improve, to explore, and to celebrate another year.