Consistency Among Rangers Defensemen

It appears a recent theme around here these days is consistency. I'm not sure that's a bad thing. 

A few weeks back, Hockey-Graphs [definitely my favorite collaboration blog site] posted what I thought was a really intuitive way to display consistency. 

In his piece here, author Conor T. added density lines to a scatter plot of team scoring chances for and shots for, and scoring chances against and shots against as a way to visualize consistency. The more compact the scatter points, and therefore density lines, are, the more consistent the performances. 

Naturally, I immediately began to think of ways to apply this to the Rangers. 

There has been a lot of turmoil surrounding the Rangers and coach Alain Vigneault's decision to keep Dylan McIlrath in the pressbox. I for one do agree with this turmoil, but that's neither here nor there. But, it opens a good opportunity to take as many deep dives on the Rangers defense as we can to find out if it is a good idea or not.

For this blog, I'll be applying Conor T's idea of adding density lines to a scatter plot to model consistency. 

In the charts below, I've compiled the last ten games of data for each Rangers d-man from

In lieu of scoring chances, which Conor T. had used, I went for shot attempts [mostly because I cannot find a website that tracks daily scoring chances for and against for individual players. I know War-On-Ice used to, but I believe in an effort to streamline their website, they removed the date range selector. Anyone know where I can get that data these days?]

Rather than using raw CF and CA events, I went for a players percentage of both as my plot points. So, if the Rangers surrender 40 shot attempts and attempt 50 of their own, and Keith Yandle is on the ice for 10 attempts against and 25 attempts for, that game for him will be graphed as 25% CA, and 50% CF - a fantastic game. This was done as a proxy to eliminate factors like ice time and games where the Rangers either significantly out-shoot or are out-shot by their opponent.

Let's get to the charts:

Here, I really love having all the charts on the same image, lined up by most popular pairing usage. What's most important here is knowing that all axis are the same, 0 - 70 on the X and Y-axis. This is a very clean way to compare all 7 Rangers defensemen at the same time.


  • Klein and Boyle are remarkably consistent
  • Though McIlrath's density lines appear all over the place at first glance, you'll notice that most of the data remains below the 40% CA line. He's doing a great job limiting shots against. 
  • Yandle and McIlrath having similar charts, though Yandle does find himself consistently higher % CF, should raise a lot of alarms in the Rangers FO.
  • Outside of a couple of rough games in his last ten, Staal has been good... surprisingly so. 
  • Girardi similar to Staal. A couple of really rough games in there, but his chart is very narrow - meaning you know what kind of offensive output you're going to get out of Girardi most nights. On the ice for roughly 30-40% of the Rangers CF events.
  • All-Star Ryan McDonagh. The only player not to touch the 25% CF events line for the Rangers. Have to love that. If he could have avoided that 38% CF and 53% CA game (last game vs. Dallas) and had it been more in line with his usual, he'd have a very concise looking plot.

A new element to add to blog posts for myself from now on will be to screenshot the R code I use to create any visualizations if applicable. I think a lot of people are doing some amazing things with data visualization right now for hockey. My favorite currently is without a doubt Micah Blake McCurdy over at This is the cutting edge analysis on the hockey stats blogosphere these days.

The point of that paragraph being, I'm going to start posting the R code just in case there is anyone out there, like me, interested in learning more about the power of the tools that are out there. I'm by no means good at R, but I'm trying to get there. This is part of that. 

What I hope this screenshot accomplishes is two things. (1) If you're interested in R coding at all, I want you to see how easy it is to produce powerful charts. and (2) If you're reading this and good at R, I'd love some feedback. This code was copied over 7 times with the player name replaced for each d-man. I have to imagine there is a quicker way to accomplish this feat?

You can find a blown up version of each individual players charts on this Imgur album