Visualizing Rebel Alliances in the UK Government

The UK will shortly go to the polls for the 2015 General Election. However there's currently no clear front-runner, and in fact no clear coalition on the cards for a new government. The "new normal" of hung parliaments and coalition forming as part of UK politics appears to be here to stay.

Click here for full size version
As such, I decided to take a look at the open dataset provided by The Public Whip project, with a view to visualizing the relationships between MPs (members of parliament) in the 2010 to 2015 UK government, using a tool called Gephi. The idea was to analyse how MPs are related through their voting patterns in the house of commons, and in particular how they are related through agreement or rebelliousness.

Also I'll admit it: I wanted to write an article with "Rebel Alliance" in the title because I like Star Wars.

In the rest of this article, I'll describe several visualizations that were created from that public whip dataset. These show various aspects of MP relationships, and provide some interesting insights into the UK government.

MP Agreement

First, let's look at a social graph of MPs with a high level of agreement.

To create this vizualization I established relationships between MPs if their votes agree more than 85% of the time - this threshold is based on a histogram of agreement rates from the public whip data, which shows a clear threshold of agreement at around 85%.

Click here for full size version

The nodes (i.e. circles) in the above diagram represent individual MPs, coloured by their political affiliation. The edges (lines) connect MPs if they tend to agree with each other. The graph is laid out using a force-directed graph algorithm, which places related nodes next to each other in an visually pleasing way.

How can we interpret this diagram?

Unsurprisingly, the majority coalition (formed of Conservatives and Liberal Democrats, in blue and orange-yellow) tend to agree with each other, probably when voting "yes" to new bills, legislation, etc. The minority parties (predominantly Labour) also tend to agree with each other, again unsurprisingly.

Essentially, this is a picture of a typical government in the UK, with a governing majority. That's all very nice - but what else can we learn?

Rebellious Relationships

Things are more interesting if we look at rebelliousness.

The social graph below shows relationships between MPs if they voted the same way (yes or no), and they were rebelling against their respective parties in the process.

For example you might see two members of the majority coalition going against the the party line, voting "no" to a bill that that they strongly disagree with. These members are connected in rebelliousness!

Another example would be a bill with strong cross-party support - perhaps a security or policing bill - where the majority of all parties vote "yes". In this example, if member A (Labour) and member B (Conservative) both vote "no" then again they are connected in rebelliousness. The party they belong to is not important in this example - they are rebels either way.

Click here for full size version

Above, the edges of the graph are sized according to the number of times the two MPs have agreed in rebelling - a bigger edge implies stronger agreement between the MPs in disagreeing with their parties. The MP nodes and names are bigger if they have more connections - so the more rebellious MPs will appear larger.

So what can we say about this graph?

First, it seems that rebelliousness broadly follows party lines, because Labour, Conservative, and Liberal Democrat rebels tend to be placed near to each other by the layout algorithm. That is, there are broad groups of rebels associated with each party.

However there are relationships between members of different parties too, which could imply pending defections or the seeds of new political parties. Also, well known, notorious characters in UK politics such as Dennis Skinner, Philip Hollobone, and Mark Reckless make strong appearances and are well connected within the graph.

So this is quite an interesting view of MP relationships and there is more that could be said here, however the graph is showing all cases when two MPs have rebelled together. As such, the resulting vizualization is quite noisy. Fortunately, it can be cleaned up by setting a threshold to detect more interesting relationships.

Significant Rebellions

The following diagram only connects MPs when they have rebelled together on more than 1% of the votes they have both participated in  - this threshold filters out a lot of the noise:

Click here for full size version

Now, more structure becomes apparent, again thanks to the force-directed layout algorithm which attempts to place related nodes close to each other.

Three distinct clusters seem to have appeared.

One cluster is a fairly large group from the Conservative party, and other two groups are mostly composed of Labour MPs with a sprinkling of Liberal Democrats. These groups could be indicators of alliances within parliament, focused around particular agendas - though a lot depends on the specifics of the voting that has taken place. Certainly, it's interesting to see that some fairly cohesive groups of MPs have a tendency to rebel together.

Rebel Alliances

The previous graph provides some nice insights, but there's a further technique we can apply to more clearly partition the clusters that seem to have emerged. Gephi (the tool used to build these vizualizations) has a built-in algorithm for detecting communities, and applying that algorithm consistently partitions the MPs in the following way:

Click here for full size version

The three groups that were suggested the previous visualization are clearly de-marked the algorithm, confirming that there are cohesive groups that can be detected.

But interestingly Zac Goldmith (another well known, and somewhat controversial figure in UK politics) appears in a separate, smaller community from the larger group of rebels making up the Conservative cluster. This may be because Mr. Goldsmith has looser ties to the other Conservative rebels, and a stronger connection to Marsha Singh from Labour.

At least - that's what the data suggests...


The public whip data is a fascinating resource for understanding UK politics.

The voting records of MPs are a strong statement of their role in government, and of their political views. By analyzing those voting records, it's possible to derive relationships between MPs, and to identify interesting clusters - for example, of MPs that have a tendency to rebel together.

Of course an analysis is only as good as the underlying data, and it's important to note that official voting positions of UK political parties are not publicly available - so it's not possible to know for sure if an MP has rebelled, or has simply voted according to their conscience in a free vote. So rebelliousness in this context should be interpreted as "significantly misaligned with the rest of the party".

Also please note that the above analysis is meant to demonstrate the kind of insights that can be gained from open data. I am not a political pundit, so if you feel that the information is incorrect or misleading, let me know and I will address your comments in updates to this blog post.

Technical Notes

You can find the public whip data here. I used a combination of MySQL, Python, and Gephi to create the visualizations in this blog. The code, graphs, and images can be found in this GitHub repository.


  1. Great article. Come on over and do this for our Senate and Congress!


Post a Comment

Popular posts from this blog

I Know Where You Were Last Summer: London's public bike data is telling everyone where you've been

Harvesting Data from the Steam Community API

Personal Data Hacks: Visualizing Data from