Last year, I made a series of visualizations based on playlist data from my favorite local radio station, KEXP. Well, it’s a new year and there’s new data, so here I go again! First, let’s start with the classic viz I made last year. This view shows the top artists, albums, and tracks of the year. The color denotes which DJ played them. You can use the dropdowns to view specific DJs or toggle between artist, album, and track.
Our big winner here was Spoon, not surprising as they released one of the best new albums of 2014. However, DJs must’ve been drawing from their back catalog a bit to get them up to all those plays because their new album was in 5th place when it comes to top albums. The top spot actually went to what was probably my favorite album of the year, “Sun Structures” by Temples.
I mean…that hair + that awesome psychedelic sound….what’s not to love?
By the way, if you look at the top albums and tracks, you’ll often see an asterisk for artist. This is because the DJ assistants at KEXP who input all the playlist data can’t agree if it’s Alt-J or alt-J. Capitalization irregularities actually plagued this whole dataset, so some of the numbers may look a little lower than they should be. Another issue is when bands have song titles with the same name. For example, a track named “Feel” appears to be the second most played song, when in actuality that’s a combination of plays for songs by Bombay Bicycle Club, Ty Segall, Big Star, and a few others. Unfortunately, you can’t use combined fields in parameters in Tableau, so there was no way for me to fix it on this particular dashboard.
The number one song is “Red Eyes” by The War on Drugs. I was especially tickled by the high placement of the song “Queen” by local hero Perfume Genius. This song is amazing and deserves the number spot for the line “No family is safe when I sashay” alone. The video is pretty weird and rad:
The whole album is amazing and I couldn’t help but use intoxicants and lay on the floor and listen to it when I put the vinyl on for the first time.
I wanted a couple dashboards that people could go into and make insights about their favorite bands and DJs. First, an artist explorer. You can use the dropdown to choose a couple different artists to compare. There’s a text search, if you don’t want to read through the whole big list. As a starting point, I compare my two favorite Seattle bands, La Luz and TacocaT. They seem to be pretty even in plays.
Next, here’s a dashboard that looks at what DJs like to play. I’ve started out with infamous morning DJ and tastemaker John Richards. Man, that dude loves Strands of Oaks’ newest album. Especially on Tuesday mornings at 6 am. In fact, he actually said himself it was his favorite album of the year. It’s pretty fun to click on one of the artists on the right and see what time they are played the most.
This year, I really wanted to do something with the top 90.3 albums of the year. KEXP had a form up on their website in December for their listeners to vote for their five favorite 2014 album releases of the year. They tallied up the votes and ranked the albums and did a fun countdown at the end of December. I wanted to compare the ranks by listeners to how often those albums were actually played. That’s how I got this nifty quadrant chart:
I’ve divided the chart into 4 sections. “High Listener Rank, High DJ Plays” means that the listeners and DJs were in agreement that these albums fucking rocked and should be considered to top honors. The listeners and DJs are also in agreement in the “Low Listener Rank, Low DJ Plays” quadrant. The interesting stuff is really in the other two quadrants. I noticed that in “Low Listener Rank, High DJ Plays” there are a few more local bands and just generally less known bands. This section is showing our taste-makers at work. I’d bet that a lot of people voted for these albums after hearing them first on KEXP. The “High Listener Rank, Low DJ Plays” section is interesting because it’s filled with indie favorites: The Afghan Whigs, Jenny Lewis, Aphex Twin… these are some heavy-hitters. These are all pretty well-known artists outside the college rock scene, which is maybe why KEXP plays them a little less than some other bands.
Last up, I just wanted to make some quick points of things I thought would be interesting to know. For example, did you know that the artist with the most distinct albums played on KEXP was Johnny Cash? It probably helps that he made a buttload of them. Click through these story points if you want to see more stuff like that.
I think the third story point is especially interesting. I filtered the list to only show artists that only have one song played on KEXP and than sorted it by number of plays. So you can think of it as the ultimate 1-hit wonders on KEXP in 2014.The song that ended up in the top spot on that list was actually pretty cool:
Dig into those dashboards if you feel so inclined. And be sure to tweet me and interesting tidbits you find in there!
I hope your year is already off to a fabulous start! I’ve been thinking, I’d really like to set some goals for myself this year, so I’m making my DATA RESOLUTIONS. And I’m declaring them in front of all you people on the internet so that I’ll feel at least slightly accountable. Ready…. let’s go!
Resolution 1: Learn Python
I love using tools like import.io for web scraping, but sometimes it isn’t enough. This year I want to learn enough Python to be able to do some web scraping and data formatting jobs.
People all over the web are using D3, including for some nifty Tableau applications. So, I want to as well!
Resolution 3: Grow the /r/tableau community
I’ve been neglecting my poor baby, the /r/tableau subreddit. This year, I want to get more happening with it including contests, discussions, IamA’s with Tableau Employees and more!
That’s enough for now, since these are all pretty big undertakings. What are your data resolutions?
This is a fantastic book from Christian Rudder, co-founder of OkCupid. Fans of the OkTrends blog (my favorite data blog of all time) will love this. Tons of hilarious and poignant insights based on data from online dating profiles.
Give your data lover a little piece of data history. This is a great collection of antique graphs and maps I found on Etsy. There’s plenty of other sellers of these kinds of prints, too, if you just search for “antique graphs”.
I’ve noticed that there’s a lot of us out there in the dataviz world that are also musicians. I’m a sax and bass player. I know many of you out there are also into playing music. I’ve always wondered what it was that draws musical people to dataviz (or vice versa).
My theory is that both dataviz and music engage both the analytical, mathematical side and artistic creative sides of your brain. I was recently sent this TED-Ed video that alludes to the same idea. Check it out. It’s a party in our brains!
Tomorrow is the first month of November so that means people everywhere will put down their razors for the month and see what happens in support of men’s health. It’s Movember! If you haven’t heard, Matt Francis is organizing a Tableau Team. Unfortunately (or probably fortunately, really…) I can’t grow a mustache. Luckily, Tableau can grow one for me!
A few other Tableau celebrities got the mustache treatment, as well. Check it out in my viz!
Thanks to the lovely folks at import.io for showing a super fun time last Thursday at our Halloween special webinar! If you logged on, you probably caught some of our “fancy dress” but in case you weren’t, this happened:
Getting ready to get spooky with data on our @importio webinar!
If you didn’t make it, never fear! It was recorded and you can watch the whole thing here:
I wanted to go a little more into detail about how to build this dashboard, so I’ll break it down piece by piece so that you can recreate it!
Building the first bar chart is pretty easy. To start, put [Costume Category] on rows. Since there are duplicate rows (due to having one row for every word in a title), instead of using [Number of Records] we are going to do a CountDistinct([Prod ID]). You can do this by right-click dragging [Prod ID] to the columns shelf and then selecting Count Distinct, or by clicking the drop down menu on the Prod ID pill and then going to Measure>Count(Distinct). This means Tableau is now only counting each costume once.
Making the price histogram was also very simple. All you have to do is select [Price] in the Measures pane and then hit the histogram button in Show Me.
If the bins that your histogram selects are too big or small you can edit them by finding [Price(Bin)] in the Dimensions pane, clicking the drop down and clicking “Edit”. This will allow you to change your bins to whatever size you’d like.
Lastly, instead of doing a count on price, which will make for duplicate rows because of the join with the words, switch out [CNT(Price)] on the Rows shelf with [CNTD(Prod Id)].
To create the word cloud, drag the [Words] on to text and [Number of Records] on size. At first, you’ll get a treemap. This is a good point to filter out some of the words to keep them mucking out the word cloud. I filtered out words like costume, adult, the, of, etc. You can just over over a square and click “Exclude”. Once you do that, you can switch the marks card from “Automatic” to “Text” to get a word cloud.
Another thing I wanted to do was filter to only the top 30 words; that way nothing is too small. Since we already filtered on [Words] when we excluded “adult” and “costume” and the like, we can create a duplicate field for words and filter on that. If you click the drop down menu on [Words] you will find the Duplicate option. Click on this and drag it to the Filters shelf. Once you are there, click the tab that says “Top” and choose “By field:” and set it to the Top 30 by [Number of Records].
The table is pretty simple. Drag [Item] to rows and [Price] to label. Easy peasy. I also put [Prod Id] on Detail in the Marks card (you’ll see why later) and [Description] in the tooltip.
Hover Help Ghost
This is a trick I use all the time as it’s a great way to add context to your dashboard without taking up too much space. It’s been well documented before so I won’t go into too much detail. The only real thing I did differently was change the shape to a custom shape that looks like a little ghost. Read more about utilizing custom shapes here.
The “Sexy” button
To create this, I first went through all the words and created groups so that words like “Babe” and “Flirty” fell into the “Sexy” group and all other words counted as “Everything else”
With the groups created and renamed to [Sexy Words] I created the “Sexy” button by dragging out [Sexy Words] to the text on the marks card and then editing the label by clicking on the Text button and editing it to say “Click here to bring back”. Then I put [Sexy Words] on filter and filtered to only show words in the “Sexy” group. Then, I edited the formatting to have borders and colors to make it look button like.
Tableau Public is great for rapidly creating a lot of different charts types like we did above, but the real power comes in making these charts interact with each other. This is done through “Dashboard Actions.” Now that all of our sheets are created, we can create a new dashboard and drag everything onto it. Then we can create a series of dashboard actions by going to Dashboard>Actions in the menu. Here’s all the actions I created:
Category filters everything: This action makes it so that click on a costume category in the bar chart filters the price histogram, frequent words, and costume list. Set “Categories” as the source sheet and “Price Histogram” “Table” and “Word Cloud” as the targets, with the action set to run on Select and clearing it will Show all values. I also set the target filter to only filter on [Costume Category].
Histogram filters everything: This action makes it so that click a price bin will filter the table, bar chart, and word cloud to only show costumes that fall in that price point. This is set up by having the histogram as the Source Sheet and the bar chart, table, and word cloud.
Word cloud filters everything: Just like the two actions above, this means that clicking on a word in the word cloud filters the prices, categories, and costume list to only show costumes that contain that word. In this case, the word cloud is the Source and the Targets are everything else.
The “Sexy” button: Clicking on this button will filter everything to only show costumes that contain words that are in the “Sexy” group we made earlier. The source sheet is the sexy button and the target sheets are the categories, histogram, table, and word cloud.
View the image: Dashboard actions do more than just filter things. They can also be used to display images. Buycostumes.com has images for every costume based on the [Prod ID] so we can easily pull in these photos using a URL action. When clicking the “Add Action” button, choose URL. The source of this action will be the table (this is why we put [Prod ID] on detail!) and set the URL to say “http://images.buycostumes.com/mgen/merchandiser/.jpg?zm=170,170,1,0,0″. Set the action to run on Select. Now, clicking on a costume in the table will open up the image. If we add a Web Page to the dashboard using the Web Page object, we can view the image right on the dashboard.
I wanted the theme to be really obvious, so I did a bit of design work to make everything match the Halloween theme. First, I set the background color to all of my sheets and the dashboard to black and set the other colors to fit a theme. I based everything off of this color scheme:
Several months ago, I was doing some Google searching to figure out what a Barbie Dream Boat is worth these days. The Barbie Dream Boat was basically my most prized possession as a kid. I got it for Christmas when I was 7. It came in a gigantic box. It had a pool that you could fill with water. AND IT HAD A BLENDER. I made so many virgin piña coladas in there.
For those who don’t know, I’m on a bit of an extended trip working out of our London office right now. It’s been rad and one of the things I’m really excited about doing while I’m here is hanging out with my pals at Import.io. We are putting on a special Halloween edition webinar next Thursday, October 16th (my birthday!), to show how to scrape Buycostumes.com and build this viz in Tableau: