From CS294-10 Visualization Fa08

Jump to: navigation, search


New group project proposed: see A3-MaxwellPretzlavNicholasKong

Domain / Idea

Last.fm Visualization

I want to make an interactive visualization of a user's music listening history. It seems easiest to use the last.fm API (last.fm has four years of data on my music listening) and create the visualization using Flare (since I'm already familiar with Actionscript 3 and related technologies). I'm particularly interested in looking at the relationship between how many songs by a given artist a user has in their collection, and how much they listen to that artist. Does having a lot of songs by someone mean you listen to them more?

I plan to create dynamic visualizations that show relationships between different aspects of a user's music library. I particularly like Flare's ability to show extra data at mouseover, as I can then use two different quantitative values on the axes and allow the actual data, like Song or Artist, to be acquired when needed. Additionally, because users tend to have many many songs in their libraries, but maybe only listen to a small fraction of that (i.e. have a very long tail) I want to use Flare's dynamic sorting and filtering capabilities to create a slider for how much data to use in its display (i.e. filter out albums that have only been listened to once, or albums with only one or two songs).

This visualization is a good fit for this domain for several reasons. First, since last.fm is already an online service, building an online application to display the data is something Last.fm users will expect. Additionally, using Flash allows me to pull the real-time data from last.fm so what users see will reflect their current data. Lastly, there are many different ways to view a users' listening history, so having an interactive visualization tool that lets a user "drill down" into finer and finer detail of music data creates a very powerful exploratory experience. Showing a "small multiples" display of hundreds of artists's albums graphed against number of listens would be completely illegible -- interactivity allows users to see just the information they want.

Data Domain

The Last.fm API offers a number of different types of data. All of their data is available in a well-documented XML format (easily parsed with E4X). The main format I plan to use is a listing of each individual song a user has listened to, the number of times they've listened to it, and the artist the song is by. By walking this data and counting the number of songs by each artist and the total number of listens to songs by that artist, I can construct the first visualization shown below. Displaying the second and third visualizations will require pulling additional data from Last.fm; namely which albums are by which artist and what songs are on each album. To make this feasible that data will only be pulled on demand when the user clicks on a particular artist-dot.

Existing Last.fm Visualizations



After entering a username to explore (all last.fm data is public and no authentication is needed) and pressing "Go" the application will begin downloading track data. Since downloading a longtime user's song data could take a while, the application will show a small downloading indicator and if Flare allows it populate the graph as the data comes in (the data arrives in 50 song chunks ordered by number of listens). In the first, main visualization the Y axis will show the number of times a user has listened to a song by a given artist, and the X axis will show the number of unique tracks by a given artist that the user has ever listened to. Since I expect a very large clump of data in the lower-left hand corner and more sparse dots moving to the upper right, there will be a toggle that switches between showing the scales on linear and logarithmic scales (while they're visible in the second two views, I've realized that they don't actually make sense in those views and won't be in the final application).

The core interactive feature of the program is the ability to drill-down further into the data. When the cursor hovers over a dot representing an artist, a hover window will display the artist name and associated numerical data. When the user clicks on an artist, they will be taken to a display specific to that artist showing different albums and number of listens to those individual albums. Clicking on the resulting bars will further drill down to the individual tracks on the album. This allows the user to see not just overall trends in their music listening, but interactively view specific detailed views as well.

Possible Issues

According to last.fm's data, I currently have over 8,500 unique tracks in their database. If this amount of data becomes an issue for Flash/Flare to handle (memory-wise) I may have to switch to prefuse and the Java last.fm API.

[add comment]
Personal tools