block by armollica 6391d8ecd6b010a9c8ca

State Lotteries

Full Screen

Lottery income per U.S. state in 2013. This income is divvied up into three places. Some goes to the prize winner, some pays for the cost of administering the lottery and the rest is government revenue. Several states don’t administer lotteries: Alabama, Alaska, Hawaii, Mississippi, Nevada, Utah. Wyoming started up a lottery in July 2013 and isn’t included here. The District of Columbia also runs a lottery but data isn’t provided in the source data.

Notes:

West Virginia really gouges it’s residents. Less than 20% of its lottery income goes to prize money and it has the fifth highest lottery income per person. Delaware and Rhode Island aren’t much better.

Something weird is going on with the New Jersey data. The apportionments don’t add up to the total lottery income (click the ‘Share of Lottery Income’ radio button). This is an issue with the source data.

I think the prize money shown here is taxed, both at the federal and state level. Assuming this is the case, government revenues from lotteries are effectively higher than the number shown here. This site, USA Mega, shows how the tax rates across states.

Data source: U.S. Census Bureau

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>State Lotteries</title>
    <style>
      body {
        font: 12px monospace;
      }

      .axis line,
      .axis path {
        fill: none;
        stroke: #000;
        stroke-width: 1px;
      }

      .y.axis path {
        display: none;
      }

      form {
        position: absolute;
        right: 10px;
        top: 10px;
      }
    </style>
  </head>
  <body>
    <form>
      <label><input type="radio" name="variable" value="raw" checked="true"> Lottery Income</label>
      <label><input type="radio" name="variable" value="perCapita"> Lottery Income Per Capita</label>
      <label><input type="radio" name="variable" value="share"> Share of Lottery Income</label>
    </form>
    <script src="//d3js.org/d3.v3.min.js" charset="utf-8"></script>
    <script>
      var margin = { top: 30, left: 100, bottom: 30, right: 20 },
          width = 960 - margin.left - margin.right,
          height = 800 - margin.top - margin.bottom;

      var scale = {
        x: d3.scale.linear().range([0, width]),
        y: d3.scale.ordinal().rangeRoundBands([height, 0], 0.1),
        color: d3.scale.ordinal()
      };

      var hue = 60;
      var i = d3.interpolateHcl(d3.hcl(hue, 50, 80), d3.hcl(hue + 120, 75, 50));
      scale.color.range(["#cfa8b4",  "#79658c", "#1d2b64"]);

      var axis = {
        x: d3.svg.axis().scale(scale.x).orient("bottom"),
        y: d3.svg.axis().scale(scale.y).orient("left")
      };

      var svg = d3.select("body").append("svg")
          .attr("width", width + margin.left + margin.right )
          .attr("height", height + margin.top + margin.bottom)
        .append("g")
          .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

      svg.append("g")
          .attr("class", "x axis")
          .attr("transform", "translate(0," + height + ")")
        .append("text")
          .attr("class", "label")
          .attr("x", width)
          .attr("y", -6)
          .style("text-anchor", "end");

      svg.append("g")
        .attr("class", "y axis");

      d3.json("data.json", function(error, data) {
        if (error) throw error; 
        
        var apportionment_names = d3.keys(data[2]).filter(function(key) { return key.startsWith("to"); });

        data = data.filter(function(d) { return d.income; });
        data.forEach(function(d) {
          // raw lottery income and apportionments
          var x0 = 0;
          d.apportionments = apportionment_names
            .map(function(name) {
              return { name: name, x0: x0, x1: x0 += d[name] };
            });

          // per-capita lottery income and apportionments
          var x0 = 0;
          d.apportionmentsPerCapita = apportionment_names
            .map(function(name) {
              return { name: name, x0: x0, x1: x0 += (d[name] / d.population) };
            });
          d.incomePerCapita = d.income / d.population;

          // lottery apportionments share of income
          var x0 = 0;
          d.apportionmentsShare = apportionment_names
            .map(function(name) {
              return { name: name, x0: x0, x1: x0 += (d[name] / d.income) };
            });
        });

        svg.call(render, data, "raw", 0);

        d3.select("form").on("change", function() {
          var variable = event.target.value;
          svg.call(render, data, variable, 1000);
        });

        function render(selection, data, variable, duration) {
          if (variable === "raw") {
            var sorter = function(a, b) { return a.income - b.income; },
                xMax = d3.max(data, function(d) { return d.income; }),
                dataAccessor = function(d) { return d.apportionments; },
                labelText = "Lottery Income";
            axis.x = axis.x.tickFormat(d3.format("$,"));
            scale.x.range([0, width]);
          }
          else if (variable === "perCapita") {
            var sorter = function(a, b) { return a.incomePerCapita - b.incomePerCapita; },
                xMax = d3.max(data, function(d) { return d.incomePerCapita; }),
                dataAccessor = function(d) { return d.apportionmentsPerCapita; },
                labelText = "Lottery Income Per Capita";
            axis.x = axis.x.tickFormat(d3.format("$.2r"));
            scale.x.range([0, width]);
          }
          else if (variable === "share") {
            var sorter = function(a, b) {
                  return a.apportionmentsShare[0].x1 - b.apportionmentsShare[0].x1;
                },
                xMax = d3.max(data, function(d) { return 1; }),
                dataAccessor = function(d) { return d.apportionmentsShare; }
                labelText = "Share of Lottery Income";
            axis.x = axis.x.tickFormat(d3.format(",%"));
            scale.x.range([0, width - 200]);
          }

          data.sort(sorter);
          scale.x.domain([0, xMax]);
          scale.y.domain(data.map(function(d) { return d.title; }));
          scale.color(apportionment_names);


          selection.select(".x.axis")
            .transition().duration(duration).call(axis.x)
              .select(".label")
              .text(labelText);
          selection.select(".y.axis")
            .transition().delay(duration).duration(duration).call(axis.y);

          var state = selection.selectAll(".state")
            .data(data, function(d) { return d.title; });

          state.enter().append("g")
            .attr("class", "state");

          state
            .transition().delay(duration).duration(duration)
              .attr("transform", function(d) {
                return "translate(0," + scale.y(d.title) + ")";
              });

          var rects = state.selectAll("rect").data(dataAccessor);

          rects.enter().append("rect");

          rects
            .transition().duration(duration)
              .attr("x", function(d) { return scale.x(d.x0); })
              .attr("width", function(d) { return scale.x(d.x1) - scale.x(d.x0); })
              .attr("height", scale.y.rangeBand())
              .style("fill", function(d) { return scale.color(d.name); });

          var legend = svg.selectAll(".legend")
              .data(apportionment_names);

          legend.enter().append("g")
              .attr("class", "legend")
              .attr("transform", function(d, i) {
                return "translate(0," + i*20 + ")";
              })
              .each(function(d) {
                var legendNames = {
                  "toProceedsAvailable": "To Government",
                  "toAdministration": "Administration Cost",
                  "toPrize": "To Prize Winner"
                };

                d3.select(this).append("rect")
                  .attr("x", width - 18)
                  .attr("y", 50)
                  .attr("width", 18)
                  .attr("height", 18)
                  .style("fill", scale.color);

                d3.select(this).append("text")
                  .attr("x", width - 24)
                  .attr("y", 50 + 9)
                  .attr("dy", ".35em")
                  .attr("text-anchor", "end")
                  .text(function(name) { return legendNames[name]; });

              });
        }
      });
    </script>
  </body>
</html>

clean-data.r

library(dplyr)
library(tidyr)
library(jsonlite)

lotteries <- read.csv("lotteries.csv", skip=2, header=FALSE) %>%
  select(id = V5, title = V7, income = V8,
         toPrize = V9, toAdministration = V10, toProceedsAvailable = V11) %>%
  mutate(income = extract_numeric(income),
         toPrize = extract_numeric(toPrize),
         toAdministration = extract_numeric(toAdministration),
         toProceedsAvailable = extract_numeric(toProceedsAvailable)) %>%
  filter(!is.na(id), income != "X")

population <- read.csv("population.csv", skip=2 , header=FALSE) %>%
  select(id = V2, title = V3, population = V4)

output <- population %>%
  merge(lotteries, all=T)

write(toJSON(output), "data.json")

data.json

[{"id":1,"title":"Alabama","population":4817678},{"id":2,"title":"Alaska","population":728300},{"id":4,"title":"Arizona","population":6561516,"income":645853,"toPrize":426143,"toAdministration":43007,"toProceedsAvailable":176703},{"id":5,"title":"Arkansas","population":2947036,"income":414561,"toPrize":292124,"toAdministration":34771,"toProceedsAvailable":87666},{"id":6,"title":"California","population":38066920,"income":4445874,"toPrize":2652095,"toAdministration":224063,"toProceedsAvailable":1569716},{"id":8,"title":"Colorado","population":5197580,"income":524074,"toPrize":345640,"toAdministration":39621,"toProceedsAvailable":138813},{"id":9,"title":"Connecticut","population":3592053,"income":1059930,"toPrize":699063,"toAdministration":43292,"toProceedsAvailable":317575},{"id":10,"title":"Delaware","population":917060,"income":452962,"toPrize":99264,"toAdministration":44509,"toProceedsAvailable":309189},{"id":11,"title":"District of Columbia","population":633736},{"id":12,"title":"Florida","population":19361792,"income":4741570,"toPrize":3162889,"toAdministration":147588,"toProceedsAvailable":1431093},{"id":13,"title":"Georgia","population":9907756,"income":3407047,"toPrize":2332453,"toAdministration":145606,"toProceedsAvailable":928988},{"id":15,"title":"Hawaii","population":1392704},{"id":16,"title":"Idaho","population":1599464,"income":182232,"toPrize":122888,"toAdministration":11167,"toProceedsAvailable":48177},{"id":17,"title":"Illinois","population":12868747,"income":2832575,"toPrize":1743685,"toAdministration":317697,"toProceedsAvailable":771193},{"id":18,"title":"Indiana","population":6542411,"income":870510,"toPrize":581346,"toAdministration":63662,"toProceedsAvailable":225502},{"id":19,"title":"Iowa","population":3078116,"income":339252,"toPrize":200802,"toAdministration":52564,"toProceedsAvailable":85886},{"id":20,"title":"Kansas","population":2882946,"income":230469,"toPrize":138555,"toAdministration":19740,"toProceedsAvailable":72174},{"id":21,"title":"Kentucky","population":4383272,"income":758665,"toPrize":494912,"toAdministration":37764,"toProceedsAvailable":225989},{"id":22,"title":"Louisiana","population":4601049,"income":422633,"toPrize":236159,"toAdministration":25953,"toProceedsAvailable":160521},{"id":23,"title":"Maine","population":1328535,"income":212886,"toPrize":143938,"toAdministration":14880,"toProceedsAvailable":54068},{"id":24,"title":"Maryland","population":5887776,"income":2021118,"toPrize":1038476,"toAdministration":340991,"toProceedsAvailable":641651},{"id":25,"title":"Massachusetts","population":6657291,"income":4565196,"toPrize":3523859,"toAdministration":94327,"toProceedsAvailable":947010},{"id":26,"title":"Michigan","population":9889024,"income":2260945,"toPrize":1493438,"toAdministration":70835,"toProceedsAvailable":696672},{"id":27,"title":"Minnesota","population":5383661,"income":527007,"toPrize":365831,"toAdministration":25392,"toProceedsAvailable":135784},{"id":28,"title":"Mississippi","population":2984345},{"id":29,"title":"Missouri","population":6028076,"income":1116996,"toPrize":752964,"toAdministration":50003,"toProceedsAvailable":314029},{"id":30,"title":"Montana","population":1006370,"income":60188,"toPrize":32176,"toAdministration":7991,"toProceedsAvailable":20021},{"id":31,"title":"Nebraska","population":1855617,"income":170807,"toPrize":93092,"toAdministration":17034,"toProceedsAvailable":60681},{"id":32,"title":"Nevada","population":2761584},{"id":33,"title":"New Hampshire","population":1321069,"income":263794,"toPrize":173357,"toAdministration":15961,"toProceedsAvailable":74476},{"id":34,"title":"New Jersey","population":8874374,"income":2663519,"toPrize":1631717,"toAdministration":70859,"toProceedsAvailable":883588},{"id":35,"title":"New Mexico","population":2080085,"income":139267,"toPrize":79548,"toAdministration":18329,"toProceedsAvailable":41390},{"id":36,"title":"New York","population":19594330,"income":7697675,"toPrize":4218988,"toAdministration":388580,"toProceedsAvailable":3090107},{"id":37,"title":"North Carolina","population":9750405,"income":1570874,"toPrize":1024347,"toAdministration":72220,"toProceedsAvailable":474307},{"id":38,"title":"North Dakota","population":704925,"income":26603,"toPrize":14217,"toAdministration":4101,"toProceedsAvailable":8285},{"id":39,"title":"Ohio","population":11560380,"income":2531002,"toPrize":1668038,"toAdministration":99872,"toProceedsAvailable":763092},{"id":40,"title":"Oklahoma","population":3818851,"income":200209,"toPrize":104463,"toAdministration":23641,"toProceedsAvailable":72105},{"id":41,"title":"Oregon","population":3900343,"income":864231,"toPrize":206837,"toAdministration":70198,"toProceedsAvailable":587196},{"id":42,"title":"Pennsylvania","population":12758729,"income":3441263,"toPrize":2299006,"toAdministration":72293,"toProceedsAvailable":1069964},{"id":44,"title":"Rhode Island","population":1053252,"income":539026,"toPrize":153206,"toAdministration":6204,"toProceedsAvailable":379616},{"id":45,"title":"South Carolina","population":4727273,"income":1114410,"toPrize":775453,"toAdministration":37100,"toProceedsAvailable":301857},{"id":46,"title":"South Dakota","population":834708,"income":146536,"toPrize":32418,"toAdministration":7767,"toProceedsAvailable":106351},{"id":47,"title":"Tennessee","population":6451365,"income":1278328,"toPrize":720231,"toAdministration":57068,"toProceedsAvailable":501029},{"id":48,"title":"Texas","population":26092033,"income":4139450,"toPrize":2767359,"toAdministration":181966,"toProceedsAvailable":1190125},{"id":49,"title":"Utah","population":2858111},{"id":50,"title":"Vermont","population":626358,"income":96067,"toPrize":64556,"toAdministration":8619,"toProceedsAvailable":22892},{"id":51,"title":"Virginia","population":8185131,"income":1594265,"toPrize":1025175,"toAdministration":80727,"toProceedsAvailable":488363},{"id":53,"title":"Washington","population":6899123,"income":534041,"toPrize":339366,"toAdministration":49954,"toProceedsAvailable":144721},{"id":54,"title":"West Virginia","population":1853881,"income":713850,"toPrize":116230,"toAdministration":32897,"toProceedsAvailable":564723},{"id":55,"title":"Wisconsin","population":5724692,"income":566103,"toPrize":329202,"toAdministration":38155,"toProceedsAvailable":198746},{"id":56,"title":"Wyoming","population":575251},{"id":72,"title":"Puerto Rico","population":3638965}]

lotteries.csv

GEO.id,GEO.id2,GEO.display-label,GC.target-geo-id,GC.target-geo-id2,GC.display-label,GC.display-label,L001,L002,L003,L004
Id,Id2,Geography,Target Geo Id,Target Geo Id2,Government,Government,Income (1),Apportionment of Funds - Prizes,Apportionment of Funds - Administration,Apportionment of Funds - Proceeds Available
0100000US,,United States,0100000US,,United States,United States,62383863,38792861,3208968,20382034
0100000US,,United States,0400000US01,1,United States - Alabama,Alabama,X,X,X,X
0100000US,,United States,0400000US02,2,United States - Alaska,Alaska,X,X,X,X
0100000US,,United States,0400000US04,4,United States - Arizona,Arizona,645853,426143,43007,176703
0100000US,,United States,0400000US05,5,United States - Arkansas,Arkansas,414561,292124,34771,87666
0100000US,,United States,0400000US06,6,United States - California,California,4445874,2652095,224063,1569716
0100000US,,United States,0400000US08,8,United States - Colorado,Colorado,524074,345640,39621,138813
0100000US,,United States,0400000US09,9,United States - Connecticut,Connecticut,1059930,699063,43292,317575
0100000US,,United States,0400000US10,10,United States - Delaware,Delaware,452962,99264,44509,309189
0100000US,,United States,0400000US12,12,United States - Florida,Florida,4741570,3162889,147588,1431093
0100000US,,United States,0400000US13,13,United States - Georgia,Georgia,3407047,2332453,145606,928988
0100000US,,United States,0400000US15,15,United States - Hawaii,Hawaii,X,X,X,X
0100000US,,United States,0400000US16,16,United States - Idaho,Idaho,182232,122888,11167,48177
0100000US,,United States,0400000US17,17,United States - Illinois,Illinois,2832575,1743685,317697,771193
0100000US,,United States,0400000US18,18,United States - Indiana,Indiana,870510,581346,63662,225502
0100000US,,United States,0400000US19,19,United States - Iowa,Iowa,339252,200802,52564,85886
0100000US,,United States,0400000US20,20,United States - Kansas,Kansas,230469,138555,19740,72174
0100000US,,United States,0400000US21,21,United States - Kentucky,Kentucky,758665,494912,37764,225989
0100000US,,United States,0400000US22,22,United States - Louisiana,Louisiana,422633,236159,25953,160521
0100000US,,United States,0400000US23,23,United States - Maine,Maine,212886,143938,14880,54068
0100000US,,United States,0400000US24,24,United States - Maryland,Maryland,2021118,1038476,340991,641651
0100000US,,United States,0400000US25,25,United States - Massachusetts,Massachusetts,4565196,3523859,94327,947010
0100000US,,United States,0400000US26,26,United States - Michigan,Michigan,2260945,1493438,70835,696672
0100000US,,United States,0400000US27,27,United States - Minnesota,Minnesota,527007,365831,25392,135784
0100000US,,United States,0400000US28,28,United States - Mississippi,Mississippi,X,X,X,X
0100000US,,United States,0400000US29,29,United States - Missouri,Missouri,1116996,752964,50003,314029
0100000US,,United States,0400000US30,30,United States - Montana,Montana,60188,32176,7991,20021
0100000US,,United States,0400000US31,31,United States - Nebraska,Nebraska,170807,93092,17034,60681
0100000US,,United States,0400000US32,32,United States - Nevada,Nevada,X,X,X,X
0100000US,,United States,0400000US33,33,United States - New Hampshire,New Hampshire,263794,173357,15961,74476
0100000US,,United States,0400000US34,34,United States - New Jersey,New Jersey,2663519,1631717,70859,883588
0100000US,,United States,0400000US35,35,United States - New Mexico,New Mexico,139267,79548,18329,41390
0100000US,,United States,0400000US36,36,United States - New York,New York,7697675,4218988,388580,3090107
0100000US,,United States,0400000US37,37,United States - North Carolina,North Carolina,1570874,1024347,72220,474307
0100000US,,United States,0400000US38,38,United States - North Dakota,North Dakota,26603,14217,4101,8285
0100000US,,United States,0400000US39,39,United States - Ohio,Ohio,2531002,1668038,99872,763092
0100000US,,United States,0400000US40,40,United States - Oklahoma,Oklahoma,200209,104463,23641,72105
0100000US,,United States,0400000US41,41,United States - Oregon,Oregon,864231,206837,70198,587196
0100000US,,United States,0400000US42,42,United States - Pennsylvania,Pennsylvania,3441263,2299006,72293,1069964
0100000US,,United States,0400000US44,44,United States - Rhode Island,Rhode Island,539026,153206,6204,379616
0100000US,,United States,0400000US45,45,United States - South Carolina,South Carolina,1114410,775453,37100,301857
0100000US,,United States,0400000US46,46,United States - South Dakota,South Dakota,146536,32418,7767,106351
0100000US,,United States,0400000US47,47,United States - Tennessee,Tennessee,1278328,720231,57068,501029
0100000US,,United States,0400000US48,48,United States - Texas,Texas,4139450,2767359,181966,1190125
0100000US,,United States,0400000US49,49,United States - Utah,Utah,X,X,X,X
0100000US,,United States,0400000US50,50,United States - Vermont,Vermont,96067,64556,8619,22892
0100000US,,United States,0400000US51,51,United States - Virginia,Virginia,1594265,1025175,80727,488363
0100000US,,United States,0400000US53,53,United States - Washington,Washington,534041,339366,49954,144721
0100000US,,United States,0400000US54,54,United States - West Virginia,West Virginia,713850,116230,32897,564723
0100000US,,United States,0400000US55,55,United States - Wisconsin,Wisconsin,566103,329202,38155,198746
0100000US,,United States,0400000US56,56,United States - Wyoming,Wyoming,X,X,X,X

population.csv

GEO.id,GEO.id2,GEO.display-label,HD01_VD01,HD02_VD01,,
Id,Id2,Geography,Estimate, Total,Margin of Error, Total
0400000US01,1,Alabama,4817678,*****,,
0400000US02,2,Alaska,728300,*****,,
0400000US04,4,Arizona,6561516,*****,,
0400000US05,5,Arkansas,2947036,*****,,
0400000US06,6,California,38066920,*****,,
0400000US08,8,Colorado,5197580,*****,,
0400000US09,9,Connecticut,3592053,*****,,
0400000US10,10,Delaware,917060,*****,,
0400000US11,11,District of Columbia,633736,*****,,
0400000US12,12,Florida,19361792,*****,,
0400000US13,13,Georgia,9907756,*****,,
0400000US15,15,Hawaii,1392704,*****,,
0400000US16,16,Idaho,1599464,*****,,
0400000US17,17,Illinois,12868747,*****,,
0400000US18,18,Indiana,6542411,*****,,
0400000US19,19,Iowa,3078116,*****,,
0400000US20,20,Kansas,2882946,*****,,
0400000US21,21,Kentucky,4383272,*****,,
0400000US22,22,Louisiana,4601049,*****,,
0400000US23,23,Maine,1328535,*****,,
0400000US24,24,Maryland,5887776,*****,,
0400000US25,25,Massachusetts,6657291,*****,,
0400000US26,26,Michigan,9889024,*****,,
0400000US27,27,Minnesota,5383661,*****,,
0400000US28,28,Mississippi,2984345,*****,,
0400000US29,29,Missouri,6028076,*****,,
0400000US30,30,Montana,1006370,*****,,
0400000US31,31,Nebraska,1855617,*****,,
0400000US32,32,Nevada,2761584,*****,,
0400000US33,33,New Hampshire,1321069,*****,,
0400000US34,34,New Jersey,8874374,*****,,
0400000US35,35,New Mexico,2080085,*****,,
0400000US36,36,New York,19594330,*****,,
0400000US37,37,North Carolina,9750405,*****,,
0400000US38,38,North Dakota,704925,*****,,
0400000US39,39,Ohio,11560380,*****,,
0400000US40,40,Oklahoma,3818851,*****,,
0400000US41,41,Oregon,3900343,*****,,
0400000US42,42,Pennsylvania,12758729,*****,,
0400000US44,44,Rhode Island,1053252,*****,,
0400000US45,45,South Carolina,4727273,*****,,
0400000US46,46,South Dakota,834708,*****,,
0400000US47,47,Tennessee,6451365,*****,,
0400000US48,48,Texas,26092033,*****,,
0400000US49,49,Utah,2858111,*****,,
0400000US50,50,Vermont,626358,*****,,
0400000US51,51,Virginia,8185131,*****,,
0400000US53,53,Washington,6899123,*****,,
0400000US54,54,West Virginia,1853881,*****,,
0400000US55,55,Wisconsin,5724692,*****,,
0400000US56,56,Wyoming,575251,*****,,
0400000US72,72,Puerto Rico,3638965,*****,,