This post was executed in close collaboration with Keith Helfrich, when you are done here make sure to read his post here and visit his viz here. Tableau conference is coming fast and furious. One of the best parts of conference is the people that go (YOU!) and thus I set out to build a visualization using some of my favorite techniques in order to highlight the Twitter networks from conference over the years. Since we are talking about conference this is probably the best time to get my shameless plug out of the way. Make sure to check out these sessions from Datablick:
- Supporting Eradicating Malaria in Zambia by 2020 (Anya, Jonathan & Others)
- VizAlerts: KPI-Based Alerting, Burst Emails, and More for Tableau (Jonathan & Others)
- Jedi Charts: Creating New Advanced Chart Types (Chris & Others)
As I embarked on this journey a while back, I had some goals when it came to what I was looking to build. These are summarized in the below bullets.
- Visualize Twitter network growth in detail using some form of network graph
- Needed the network graph for each year to be comparable to one another
- Interactivity against the network graphs was a must
- Provide a way for the user to view the actual tweets
- Once Keith and I decided to run parallel with our efforts, we wanted to way to “jump” from one view to the other.
The sections below detail out how I went about trying to achieve each of these goals. Don’t ask me why I gave myself so many of them.
In order to get underway, I first had to go about trying to find the data. My initial goal was to visualize the detailed growth of the conference via network graphing methods. I decided to go for it and reached out to some people on Twitter (a past boss of mine always said, you do not get what you do not ask for). Enter Michelle Wallace, Andy Cotgreave and Mike Klaczynski. These three individuals went out of their way to help me in my quest for past conference Twitter data. Thanks to them, we were able to track down 3 of the four years I was looking for (tc12-tc14). For tc15, I had previously talked with Keith Helfrich on the subject, thus I reached out to him to see if he still happened to have the data...
After a couple of Twitter messages back and forth, Keith and I came to the conclusion that it made a lot of sense to partner up and leverage one another’s efforts to better our own. This type of project is by far my favorite; I have found that teaming up with people brings different ways of solving problems and developing solutions. I end up learning a ton from the people in the community that I work with (just like I did on the WarGames project we did a while back). By the way, a great way to get this type of project experience is to volunteer for Tableau Foundation and other non-profit support projects across the wider community.
The Data Prep
As you may have already figured, I ended up getting the data from several different sources which included Tableau, Excel and Text files. I went ahead and did some work to combine all of the years into a single source (of which I will save you the ugly details). Keith had already done a great deal of work in Alteryx for the tc15 network diagrams he was building, it only made sense to build my processes into his workflow. Since we were using Alteryx, this took all of one night, and a quick 10 minute conference call with Joe Mako who saved us hours (as he usually does).
With my goals above in mind, I started with the comparison of network graph details over the years. After taking a look at a few different options, I landed on the hive plot as the technique I was going to use for this project. One of the main reasons why is the ability to keep the years somewhat uniform to one another and thus the comparison between years can be made much more easily. Lucky for me, I just posted recently about how to build hive plots in Tableau. Leveraging my previous work on this, I was off and running. Here is the view for the comparison of detailed networks over the years.
The Yearly Comparison
You can immediately see the increased density of the network across the years. This is evident in both the hive plots as well as the bars below which show volume of tweets from and to specific twitter handles. I wanted you to be able to focus on a specific node though and view its growth in terms of network connections each year. For this I built two interactions (1) “Pull out a tweeter” and (2) “Search to find a tweeter”. Here are some examples of these interactions.
“Pulling out” @tableau, making it the node on the very top of the Tableau Partner & Vendor axis vs highlighting.
Pull out @alteryx vs highlighting
Pull out @matt_francis vs highlighting
I guess we could always combine these interactions as well if we wanted too…
The Other Interactivity
There are two other interactions you have when working with the view. The first is the Hide Tableau? parameter. You can use this to actually remove @tableau from the views. Why? Well as you can see pretty much everyone tweets to @tableau at the Tableau conference (no real surprise here), thus if we are interested in other relationships this is a way to push @tableau aside and focus on other relationships. You will notice that I did this for the @alteryx and @matt_francis screen shots taken above.
We also have minimum # of tweets per mention. This parameter is simply in place to display the most prolific tweeters and relationships, while allowing the user to adjust this as desired. There is a cost benefit to showing more nodes, rending time gets slower and slower as you decrease this parameter (which increases the number of mentions rendered). To the contrary, insights are harder to come across if you increase this parameter (which decreases the number of mentions rendered) too much. We have to strike a balance here and that decision is ultimately left up to the user via Tableau’s interactive capabilities.
Lastly, there is some in-viz help available by hovering over the “?” and also a full help page by clicking the the “?”.
Once Keith and I got our workflows put together in Alteryx, something incremental came to my project with relative ease. I was able to expand and iterate on this single purpose view I had built for yearly comparison to another which was more granular and targeted on specific topics each year. The topics view is a direct result of this collaboration with Keith and I am really glad that we were able to make it happen. Here is a look at the networks and activity for the opening keynotes over the past four years.
I really wanted to incorporate the actual tweet details across the visualization. At first I was trying to incorporate them directly in Tableau, but then I took a step back and thought, why I am I fighting this. Twitter has search capability and all I really need is a correctly formatted URL. Enter our friend the dashboard URL action. First, an example of it in action focusing on the awesome @datablick herself…
Now by selecting the dashboard action “view tc15 tweets from datablick” we jump straight to Twitter and can view the actual tweet content (including pictures, etc.) directly on Twitter.
And here is another example where I have selected tweets from Francois during tc12.
Here is how it works, breaking down the URL action that you will find in the workbook.
- “https://mobile.twitter.com/search” - Twitter mobile search URL
- “?q=” URL parameter that we are sending a search query to Twitter
- “from%3A<tweeter>” – the from handle for the query
- “to%3A<tweeter>” – the to handle for the query (not shown in URL above)
- since%3A2012-10-22 – the start date for the query
- until%3A2012-11-12– the end date for the query
- “&src=typd&lang=en” – not sure you need this, but its working and I don’t want to mess with it.
You can augment this further by including hashtags, and all sorts of other criteria.
Note: The result I have found is that this is good, but not perfect. There will be times when you use this drill through in my viz and receive a no results screen from Twitter. The more granular the criteria and the older the data requested the more likely this is to happen. For my purposes here, it was good enough, I am ok with accepting this type of result for this project. Having said that, I did want to provide my findings with regards to results I experienced when testing.
Keith’s Network Diagrams
As Keith and I worked through the pros and cons of each other’s visualizations and contemplated putting things together in one workbook, we came across another use case for the dashboard URL action. This one proved to be quite a bit more complicated than the Twitter jump above. We had a number of issues with the other’s workbook miss-behaving once we landed on it. The net result is that both Keith and I ended up building specific landing pages to handle these issues (a work around), we each had a slightly different problem. We got really, really close to making it work on our existing views, and the only reason we got close was due to some expert guidance we received from Jonathan Drummey. Ultimately, our two issues were related to (1) what sheets get filtered by the URL and (2) how the context shelf acts with action and dimension filters coming through the URL. This honestly could be its own post so will not go into the details here. Jonathan’s responsiveness and expert feedback saved us hours on this (as usual).
Keith’s views are built in such a way that they can get much more granular than mine do. Thus it made a lot of sense for me to allow my user to drill through into Keith’s extremely detailed and dynamic sub graphs. Going back to Anya’s tweets from tc15, we can instead select “Jump to Keith's Network Diagram for…”, which jumps us straight over to Keith’s views where we can look at Anya’s specific Twitter network for tc15.
I have added jumps to Keith’s viz throughout the workbook where it made sense to do so. Keep an eye out for them.
The Wrap It Up Already
This project has been a lot of fun to work through. Being able to work in collaboration with Keith has been joy and I cannot thank the others I mentioned above for their guidance and help along the way. Without further ado, here is The Tableau Conference Network… (and here is the viz in a new page)