Scatter Plot of NBA Points vs Opponent Points in 2013

Scatter Plot of Points vs Opponent Points for all NBA games in 2013
Scatter Plot of Points vs Opponent Points for all NBA games in 2013

This scatter plot shows the team points vs opponent points for all NBA games in 2013.

One sees quickly that the highest scoring game was 145 to 130ish.

The strange brain shaped pattern shows that NBA teams avoid very close scores: in fact a margin of 7 was most common in 2013.

If the teams’ scores were independent we would expect a circle rather than a brain.

I like the gigantic transparent icons because the viewer observers the gray scale directly.

Below is a cleaner version which avoids overlapping icons.

One sees more clearly that there are no ties in the NBA and although, ‘we knew that’, mapping this knowledge to the graphic roots the viewer and gives confidence for further insights.

It seems not inappropriate to spread out these final scores visually – what if that last shot went in ?

What do you think?

Points vs Opponent Points for all NFL Ga


Points vs Opponent Points for all NFL Games 1989 - 2013
Points vs Opponent Points for all NFL Games 1989 - 2013

The final score (points vs opponent points) for every NFL game 1989 – 2013.

This scatter plot works as a ‘heat map.’

We see quickly that:

  • A total of 1 never happens (it is impossible by NFL scoring rules)
  • A total of 2 is rare (a safety)
  • A total of 4, while possible, has never happened.
  • The most common score is around 23, or somewhere in there.
  • Ties happen and are rare.

It could probably be improved with a better gradation scheme.


NBA Margins in 2013.

Histogram of NBA Margins in 2013

This colorfully stacked histogram shows the distribution of points minus opponent points (the margin) for all NBA games in 2013.

I like it because one sees quickly that:

  • Seven was the most common final score margin, followed by 6, 5, 4, and then 8 and 9 were equally common;
  • A margin of 1 was as common as 11.

The colors are arguably gratuitous as individual teams are hard to distinguish.

One does see a purple bump to the right; are we learning anything?

This more austere version chooses one color and shows each game once.


Margin of Victory for each NBA game in 2013


To build histograms like this yourself, start with the SDQL; margin @ season=2013 and team




Innings Pitched (times 3) for Giants Starters in 2013

Innings pitched times 3 for Giants starters in 2013
Outs (innings pitched times 3) for Giants starters in 2013

I’m just learning about matplotlib’s coloring rules.  Here I am using: plt.get_cmap(‘gist_rainbow’) and might have to look a little harder there.

I like this histogram because we see from a distance that Giants starters most often go 7 innings, followed by 6 and 5.

I like this because we see quickly that Lincecum and Petit had complete games and for 8 complete innings we can just about read off: 2 for Lincecum; 3 for Bumgarner, 3 for Cain; and 1 for Vogelsong.

To improve it; show each game as a block, rather than bars of some length. This reinforces the idea of a unit and we can count small stacks.

Also, I had trouble with the colors in the green-blue. Is that me?



Small Multiples: starter’s innings pitched for each MLB team in 2013

This beautiful small multiple set shows how many outs the starter got in 2013. The Tigers starters got 21 outs 49 times during 2013 and the Braves starters lasted 18 outs also 49 times.

The finger-like structure is due to the starting going a complete number of innings.

The bands in the histograms represent different starters; only experts can guess who is blue.

The Nationals like their starters to finish the inning; Cleveland and the Angles less so.

It looks like there are a lot of stories in there.

See anything interesting?


Small Multiples: NBA Fantasy Points Distributions


This Matplotlib generated box-plot small multiple shows the distribution for each NBA team’s fantasy points in 2013.

I like it because one distinguishes quickly a super-star driven team with a steep profile from a more balanced team with a flatter profile.

It could be improved by featuring the data rather than the constructed box.

The Grizzlies stand out in that their top three have very similar fantasy point production and then quite a drop off.

This image was generated dynamically using the small multiple engine at

The SDQL is simple: FP @ team and name and season = 2013