Report not found

There was a problem finding this report.
Region Report
May 2, 2014 · Refreshed 4 months ago
Description
Full blog post available here: http://blog.modeanalytics.com/where-americans-think-they-live/. Data from FiveThirtyEight.com. Source: https://github.com/fivethirtyeight/data/tree/master/region-survey).

Collaborators

Run History
SELECT r.respondent_id, r.region_survey, cr.name AS home_state, cr.numeric_code AS home_state_code, cs.name AS named_state, cs.numeric_code AS named_state_code FROM cooldata.fivethirtyeight_region_survey r JOIN benn.zipcode_lookup z ON z.zipcode = SUBSTRING(r.zip_code FROM '[0-9]+')::INT JOIN benn.state_codes cr ON cr.letter_code = z.state JOIN benn.region_survey_named_states_538 s ON s.respondent_id = r.respondent_id JOIN benn.state_codes cs ON cs.name = s.named_state
SELECT r.respondent_id, r.region_survey, cr.name AS home_state, cr.numeric_code AS home_state_code, cs.name AS named_state, cs.numeric_code AS named_state_code FROM cooldata.fivethirtyeight_region_survey r JOIN benn.zipcode_lookup z ON z.zipcode = SUBSTRING(r.zip_code FROM '[0-9]+')::INT JOIN benn.state_codes cr ON cr.letter_code = z.state JOIN benn.region_survey_named_states_538 s ON s.respondent_id = r.respondent_id JOIN benn.state_codes cs ON cs.name = s.named_state
<style> #graphic { font-family: Helvetica, Arial, sans-serif; font-size: 12px; width:790px; } h1,h2 { font-family:Geneva; text-align: center; } p { font-family: Geneva; font-size: 12px; } div.intro { margin: 0 auto; width: 750px; } div.descriptions { margin: 0 auto; width: 600px; } p.headers { font-size: 22px; text-align:center; } .graph-headers { font-size: 14px;} p.legends { font-size: 14px; text-align:center; margin: 5px 5px 5px 5px; } p.reset-p { text-align:center; margin: 5px 5px 5px 5px; } svg { width: auto; height: auto; } .axis path { display: none; } .axis line { shape-rendering: crispEdges; stroke: #e7e7e7; } .axis .minor line { stroke: none; } .states { stroke: #4D4D4D; stroke-linejoin: round; fill: #FDFCF5; cursor:pointer; } .states-outline { stroke: #4D4D4D; stroke-linejoin: round; fill: none; opacity: 0; cursor:pointer; } .legend { font-size: 12px; } .selected { fill: green; } .reset-hide { visibility: hidden;} .bars { cursor:pointer;} .lines { cursor:pointer;} .highlighted { stroke: 2px Solid black; fill: yellow; } hr { height:1px; border:none; color:#ccc; background-color:#ccc; margin: 30px 0px; } .d3-tip { line-height: 1.5; padding: 12px; background: rgba(0, 0, 0, 0.8); color: #fff; border-radius: 2px; text-align: center; } .d3-tip:after { display: inline; position: absolute; } a, .example, .reset { cursor: pointer; color: #75756F; text-decoration: underline; } #map-legend,#bar-legend,#line-legend { color: #E68A2E; } a:active, .example:active, .reset:active { color: #E68A2E;} </style> <div id="graphic"> <h1>Where Americans Think They Live</h1> <div class="intro"> <p>The interactive below explores the regional survey data from two recent <a href="http://fivethirtyeight.com/datalab/what-states-are-in-the-midwest/">FiveThirtyEight</a> <a href="http://fivethirtyeight.com/datalab/which-states-are-in-the-south/">posts</a>. Specifically, the graphics look into how people from different parts of the country define the Midwest and South, and whether or not they believe that they're a part of either region. The graphics only include responses that included a valid zip code (4,825 responses out of 5,306 total).</p> </div> <hr> <h2>How Each State Defines the South and Midwest</h2> <div class="descriptions"> <p>Click on a state to see how survey respondents from that state voted. People tend to define regions as being close to them. For instance, people from <span class="example" id="alaska">Alaska</span> think both the Midwest and South are much further west than people living in <span class="example" id="new-hampshire">New Hampshire</span>. Some other interesting findings: the one respondent from <span class="example" id="wyoming">Wyoming</span> seems to have forgotten Alabama, while <span class="example" id="delaware">Delaware's</span> single voter has a rather odd view of the Midwest.</p> <p class="legends">Showing reponses from <span id="map-legend">all states</span></p> <p class="reset-p"><span class="reset reset-hide">Show all states</span></p> </div> <div id="map"></div> <hr> <h2>How States' Views Differ</h2> <div class="descriptions"> <p>The charts below how states' votes were distributed. Hover over a bar to see which state it represents, and click on a bar to see that state's vote for the rest of the region. Notice how <span class="example" id="new-york">Northern states</span> tend to overestimate the size of the South, while states like <span class="example" id="minnesota">Minnesota</span> have very atypical views of the Midwest.</p> <p class="legends">Highlighting <span id="bar-legend">all states</span></p> <p class="reset-p"><span class="reset reset-hide">Show all states</span></p> </div> <div id="bar"></div> <hr> <h2>How Each State Sees Itself</h2> <div class="descriptions"> <p>The graphs show how each state sees itself, and how these views differ from the rest of the country. The left point of each line shows the percentage of people not living in that state who said it was in the Midwest or South, while the right point shows the the views of people living in the state. In nearly all cases, people wanted to be inlcuded. For example, 91% of <span class="example" id="north-dakota">North Dakotans</span> said North Dakota is in the Midwest, compared to 38% of people living outside of North Dakota. The one major exception is <span class="example" id="west-virginia">West Virgina</span>, which doesn't appear to like the perception that it's in the South.</p> <p class="legends">Highlighting <span id="line-legend">no states</span></p> <p class="reset-p"><span class="reset reset-hide">Show all states</span></p> </div> <div id="line"></div> <!--<script src="//cdnjs.cloudflare.com/ajax/libs/d3/3.4.6/d3.min.js"></script>--> <script src="//cdnjs.cloudflare.com/ajax/libs/queue-async/1.0.4/queue.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/topojson/1.1.0/topojson.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/crossfilter/1.3.7/crossfilter.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/d3-tip/0.6.3/d3-tip.min.js"></script> <script> var marginMap = {top: 70, right: 0, bottom: 30, left: 0}, widthMap = 790 - marginMap.left - marginMap.right, heightMap = 600 - marginMap.top - marginMap.bottom; var marginBar = {top: 40, right: 30, bottom: 30, left: 110}, widthBar = widthMap/2 - marginBar.left - marginBar.right, heightBar = 600 - marginBar.top - marginBar.bottom; var marginLine = {top: 30, right: 70, bottom: 40, left: 100}, widthLine = widthMap/2 - marginLine.left - marginLine.right, heightLine = 400 - marginLine.top - marginLine.bottom; // var path = d3.geo.path(); var projection = d3.geo.albersUsa() .scale(900) .translate([(widthMap / 2) + 50, heightMap / 2]); var path = d3.geo.path() .projection(projection); var f = d3.format("%") var c = d3.format(",") var southColor = "#de2d26" var midwestColor = "#3182bd" var opacityScale = d3.scale.linear() .range([0,1]) var legendArray = [] var legendRange = _.range(.1, 1.1, .1) legendRange.forEach(function(d) { legendArray.push({color:midwestColor, group:0, value:d}) legendArray.push({color:southColor, group:1, value:d}) }) var map = d3.select("#map").append("svg") .attr("width", widthMap + marginMap.left + marginMap.right) .attr("height", heightMap + marginMap.top + marginMap.bottom) var barSouth = d3.select("#bar").append("svg") .attr("width", widthBar + marginBar.left + marginBar.right) .attr("height", heightBar + marginBar.top + marginBar.bottom) var barMidwest = d3.select("#bar").append("svg") .attr("width", widthBar + marginBar.left + marginBar.right) .attr("height", heightBar + marginBar.top + marginBar.bottom) var lineSouth = d3.select("#line").append("svg") .attr("width", widthLine + marginLine.left + marginLine.right) .attr("height", heightLine + marginLine.top + marginLine.bottom) var lineMidwest = d3.select("#line").append("svg") .attr("width", widthLine + marginLine.left + marginLine.right) .attr("height", heightLine + marginLine.top + marginLine.bottom) d3.json("https://dl.dropboxusercontent.com/s/sh04tjwairb7vgk/counties.json",function(us) { data = dataset.content nameById = d3.map(); surveyById = d3.map(); centerById = d3.map(); geoFeatures = topojson.feature(us, us.objects.states).features; allStates = _.pluck(geoFeatures,'id'); var midwestStates = [], southStates = [] data.forEach( function(d) { nameById.set(+d.home_state_code, d.home_state); if (d.region_survey == 'south') { southStates.push(+d.named_state_code); } else if (d.region_survey == 'midwest') { midwestStates.push(+d.named_state_code); }; }) var uniqSouth = _.uniq(southStates), uniqMidwest = _.uniq(midwestStates); geoFeatures.forEach(function(d) { var center = path.centroid(d); centerById.set(+d.id,center); }) var cross = crossfilter(data), hometownCross = cross.dimension( function (d) { return +d.home_state_code; }), respondentCross = cross.dimension( function (d) { return +d.respondent_id; }), respondentGroup = respondentCross.group(function(d) { return d; }) namedCross = cross.dimension( function (d) { return +d.named_state_code; }), namedGroup = namedCross.group( function (d) { return d; }), surveyCross = cross.dimension( function (d) { return d.region_survey; }); southScatterValues = []; midwestScatterValues = []; allStates.forEach(function(d) { surveyCross.filterExact('south') hometownCross.filterExact(d) if (d != 78 && d != 72) { var results = namedGroup.top(100), respondents = getRespondents(hometownCross); if (respondents == 0) { respondents = 1; } results.forEach(function(r) { if (uniqSouth.indexOf(r.key) != -1) { southScatterValues.push({survey_state:d,named_state:r.key,responses:r.value,respondents:respondents}) } }) } surveyCross.filterExact('midwest') hometownCross.filterExact(d) if (d != 78 && d != 72) { var results = namedGroup.top(100), respondents = getRespondents(hometownCross); if (respondents == 0) { respondents = 1; } results.forEach(function(r) { if (uniqMidwest.indexOf(r.key) != -1) { midwestScatterValues.push({survey_state:d,named_state:r.key,responses:r.value,respondents:respondents}) } }) } }) var southLocal = getLineData('south',uniqSouth,'local'); var midwestLocal = getLineData('midwest',uniqMidwest,'local'); var southForeign = getLineData('south',uniqSouth,'foreign'); var midwestForeign = getLineData('midwest',uniqMidwest,'foreign'); var southLineValues = combineLineArrays(southLocal,southForeign) var midwestLineValues = combineLineArrays(midwestLocal,midwestForeign) drawMap(map); function drawMap (svg) { var g = svg.append("g"); drawMapObject(g,"background","states"); drawMapObject(g,"s-","states"); drawMapObject(g,"m-","states"); drawMapObject(g,"outline-","states-outline"); var legendBars = g.selectAll("rect") .data(legendArray) .enter() .append("rect") .attr("x", function (d,i) { return 125 * (d.group + 1) + (d.group * 200) + (Math.floor(i/2)*25); }) .attr("y", function (d) { return 20; }) .attr("height", function (d) { return 25; }) .attr("width", function (d) { return 25; }) .style("fill", function(d) { return d.color; }) .style("opacity",function(d) { return d.value; }); g.selectAll("text") .data(legendArray) .enter() .append("text") .attr("x", function(d,i) {return 125 * (d.group + 1) + (d.group * 200) + 25 + (Math.floor(i/2)*25); }) .attr("y", 55) .attr("dy", ".35em") .attr("text-anchor","middle") .attr("class","legend") .text(function(d,i) { if ( i == 16 || i == 17) { return f(d3.round(d.value,2)); } else if ( i != 18 && i != 19) { return d3.round(d.value*100); } }); g.append("circle") .attr("transform", "translate(" + marginMap.left + "," + marginMap.top + ")") .attr("r",10) .attr("id","c-south") .style("opacity",.8) .style("fill","#31a354") .style("stroke","#1D6232"); g.append("circle") .attr("transform", "translate(" + marginMap.left + "," + marginMap.top + ")") .attr("r",10) .attr("id","c-midwest") .style("opacity",.8) .style("fill","#f16913") .style("stroke","#913F0B"); g.append("text") .attr("x",125 + 250/2) .attr("y",15) .attr("text-anchor","middle") .attr("class","graph-headers") .text("Midwest"); g.append("text") .attr("x",450 + 250/2) .attr("y",15) .attr("text-anchor","middle") .attr("class","graph-headers") .text("South"); g.append("text") .attr("x",125 + 70) .attr("y",80) .attr("class","legend") .attr("id","midwest") g.append("text") .attr("x",450 + 70) .attr("y",80) .attr("class","legend") .attr("id","south") g.append("circle") .attr("cx",650) .attr("cy",110) .attr("r",10) .attr("id","c-midwest") .style("opacity",.8) .style("fill","grey"); g.append("text") .attr("x",650 - 20) .attr("y",115) .attr("text-anchor","end") .attr("class","legend") .text("Region's geographic center"); } function drawMapObject(gObject,id,stateClass) { var tip = d3.tip() .attr('class', 'd3-tip') .offset([0,0]) .direction('n') .html(function(d) { return nameById.get(d.id); }) gObject.call(tip); gObject.append("g") .attr("transform", "translate(" + marginMap.left + "," + marginMap.top + ")") .attr("class","state") .selectAll("path") .data(topojson.feature(us, us.objects.states).features) .enter().append("path") .attr("class",stateClass) .attr("id",function(d) { return id + d.id; }) .attr("d", path) .on('mouseover', tip.show) .on('mouseout', tip.hide); } //BAR SCATTER PLOT drawBar(barSouth,southScatterValues,southColor,"south"); drawBar(barMidwest,midwestScatterValues,midwestColor,"midwest"); function drawBar(svg,values,color,region) { var countryAverage = getCountryAverages(region); var states = []; countryAverage.forEach(function(d) { states.push(nameById.get(d.state)) }); var tip = d3.tip() .attr('class', 'd3-tip') .offset([-10,0]) .direction('n') .html(function(d) { return "<span style='color:#E68A2E'>" + f(d3.round(d.responses/d.respondents,2)) + "</span> of people in <span style='color:#E68A2E'>" + nameById.get(d.survey_state) + "</span> said<br> <span style='color:#E68A2E'>" + nameById.get(d.named_state) + "</span> was in the " + proper(region); }) var x = d3.scale.linear() .domain([0,1]) .range([0,widthBar]); var y = d3.scale.ordinal() .domain(states) .rangeRoundBands([0, heightBar], .15); var xAxis = d3.svg.axis() .scale(x) .tickFormat(formatY) .tickSize(heightBar) .orient("top"); var yAxis = d3.svg.axis() .scale(y) .orient("left"); svg.call(tip); var g = svg.append("g") .attr("transform", "translate(" + marginBar.left + "," + marginBar.top + ")"); g.append("g") .attr("class", "x axis") .attr("transform", "translate(0," + heightBar + ")") .call(xAxis); gy = g.append("g") .attr("class", "y axis") .call(yAxis); gy.selectAll("g").filter(function(d) { return d; }) .classed("minor", true); g.selectAll("rect") .data(values) .enter().append("rect") .attr("x",function(d) {return x(d.responses/d.respondents) - 2; }) .attr("y",function(d) {return y(nameById.get(d.named_state)); }) .attr("width",4) .attr("height", y.rangeBand()) .attr("class","bars bars-" + region) .attr("id",function(d) { return "bar-" + d.survey_state; }) .style("fill",color) .style("opacity", 0.2) .on('mouseover', tip.show) .on('mouseout', tip.hide); countryAverage.forEach(function(d) { g.append("rect") .attr("x",function() {return x(d.percent) - 2; }) .attr("y",function() {return y(nameById.get(d.state)); }) .attr("width",4) .attr("height", y.rangeBand()) .style("fill","black") .style("opacity",1); }) g.append("text") .attr("x",widthBar/2) .attr("y",-25) .attr("text-anchor","middle") .attr("class","graph-headers") .text(function() {return proper(region); }) if (region == 'south') { g.append("text") .attr("x",90) .attr("y",45) .attr("text-anchor","middle") .attr("class","legend") .text("National average") g.append("line") .attr("x1",140) .attr("y1",42) .attr("x2",215) .attr("y2",55) .attr("stroke-width","1px") .attr("stroke","black") } function formatY(d) { if (d === 1) { return f(d); } else { return d*100;} } } function getCountryAverages(region) { var array = []; hometownCross.filter(null); surveyCross.filterExact(region); var respondents = getRespondents(surveyCross) var hometowns = namedGroup.top(100) hometowns.forEach(function(d) { if (d.value != 0) { var entry = {state:d.key,percent:d.value/respondents} array.push(entry) } }) return array; } // SLOPE GRAPH drawLines(lineSouth,southLineValues,southColor,"south") drawLines(lineMidwest,midwestLineValues,midwestColor,"midwest") function drawLines(svg,values,color,region) { var tip = d3.tip() .attr('class', 'd3-tip') .offset([-10,0]) .direction('n') .html(function(d) { return "Vote from people living in <span style='color:#E68A2E'>" + nameById.get(d.state) + "</span>: <span style='color:#E68A2E'>" + f(d3.round(d.localYes/d.localPpl,2)) + "</span></br> Vote from people living outside of <span style='color:#E68A2E'>" + nameById.get(d.state) + "</span>: <span style='color:#E68A2E'>" + f(d3.round(d.foreignYes/d.foreignPpl,2)) + "</span>"; }) var x = d3.scale.linear() .domain([1,0]) .range([0,widthLine]); var y = d3.scale.linear() .domain([1,0]) .range([0,heightLine]); var yAxis = d3.svg.axis() .scale(y) .tickFormat(f) .tickSize(widthLine) .orient("left"); svg.call(tip); var g = svg.append("g") .attr("transform", "translate(" + marginLine.left + "," + marginLine.top + ")"); g.append("g") .attr("class", "y axis") .attr("transform", "translate(" + widthLine + ",0)") .call(yAxis); g.selectAll("path") .data(values) .enter().append("path") .attr("d",function(d) { return "M" + x(0) + "," + y(d.localYes/d.localPpl) + "L" + x(1) + "," + y(d.foreignYes/d.foreignPpl); }) .attr("stroke",color) .attr("class","lines lines-" + region) .attr("stroke-width","3px") .attr("id",function(d) { return "line-" + d.state; }) .style("opacity",0.2) .on('mouseover', tip.show) .on('mouseout', tip.hide); g.append("text") .attr("x",widthBar/2) .attr("y",-10) .attr("text-anchor","middle") .attr("class","graph-headers") .text(function() {return proper(region); }) svg.append("text") .attr("x",marginLine.left) .attr("y",heightLine + marginLine.top + 30) .attr("text-anchor","middle") .attr("class","legend") .text("Vote from non-locals") svg.append("text") .attr("x",marginLine.left + widthLine) .attr("y",heightLine + marginLine.top + 30) .attr("text-anchor","middle") .attr("class","legend") .text("Vote from locals") } // INTERACTIVITY $("#wyoming").click (function() { $(".reset").removeClass('reset-hide'); renderAll(56); }) $("#alaska").click (function() { $(".reset").removeClass('reset-hide'); renderAll(2); }) $("#new-hampshire").click (function() { $(".reset").removeClass('reset-hide'); renderAll(33); }) $("#delaware").click (function() { $(".reset").removeClass('reset-hide'); renderAll(10); }) $("#new-york").click (function() { $(".reset").removeClass('reset-hide'); renderAll(36); }) $("#minnesota").click (function() { $(".reset").removeClass('reset-hide'); renderAll(27); }) $("#west-virginia").click (function() { $(".reset").removeClass('reset-hide'); renderAll(54); }) $("#north-dakota").click (function() { $(".reset").removeClass('reset-hide'); renderAll(38); }) $(".states").click( function() { $(".reset").removeClass('reset-hide'); stateId = +$(this).attr("id").slice(2,4) renderAll(stateId); }); $(".bars").click( function() { $(".reset").removeClass('reset-hide'); stateId = +$(this).attr("id").slice(4,6) renderAll(stateId) }); $(".lines").click( function() { $(".reset").removeClass('reset-hide'); stateId = +$(this).attr("id").slice(5,7) renderAll(stateId) }); $(".reset").click( function() { $(this).addClass('reset-hide'); renderAll("all"); }); // SHOW EVERYTHING renderAll("all") if (mode && mode.resize) { mode.resize(); } function renderAll(stateId) { filterByState(stateId); shadeStates(stateId); highlightBar(stateId); highlightLine(stateId); setStateName(stateId); } function highlightBar(stateId) { d3.selectAll(".bars-south") .style("fill",southColor) .style("stroke-width","0px") .style("opacity",0.2); d3.selectAll(".bars-midwest") .style("fill",midwestColor) .style("stroke-width","0px") .style("opacity",0.2); d3.selectAll("#bar-" + stateId) .style("fill","#00CC00") .style("stroke","#00CC00") .style("stroke-width","4px") .style("opacity",1) } function highlightLine(stateId) { d3.selectAll(".lines-south") .style("stroke",southColor) .style("stroke-width","3px") .style("opacity",0.2); d3.selectAll(".lines-midwest") .style("stroke",midwestColor) .style("stroke-width","3px") .style("opacity",0.2); d3.selectAll("#line-" + stateId) .style("stroke","#00CC00") .style("stroke-width","4px") .style("opacity",1) } function shadeStates(selectedState) { shadeSurvey(selectedState,"south","#s-",southColor); shadeSurvey(selectedState,"midwest","#m-",midwestColor); } function filterByState(id) { hometownCross.filter(null); hometownCross.filterExact(id); } function shadeSurvey(selectedState,survey,stateId,color) { surveyCross.filterExact(survey); respondents = getRespondents(surveyCross) setLegend(survey,selectedState,respondents); hometowns = namedGroup.top(100) values = _.pluck(hometowns, 'value'); opacityScale.domain([d3.extent(values)[0],d3.extent(values)[1]/respondents]) hometowns.forEach(function(d) { d3.select(stateId + d.key) .style("fill",color) .style("opacity",function() { return opacityScale(d.value)/respondents; }); }) d3.selectAll(".states-outline") .style("stroke","#4D4D4D") .style("opacity",0) .style("stroke-width","1px"); d3.select("#outline-" + selectedState) .style("opacity",1) .style("stroke","#00CC00") .style("stroke-width","3px"); findCenter(hometowns,survey) } function getRespondents(cross) { var allRespondents = respondentGroup.top(10000) var uniqRespondents = _.select(allRespondents, function(d){ return d.value > 0;}); var respondents = uniqRespondents.length; return respondents; } function setLegend(survey,selectedState,numberOfRespondents) { var surveyText = "Respondents: " + c(numberOfRespondents); d3.select("#" + survey) .text(surveyText); } function setStateName(stateId) { if (stateId == 'all') { var text = "all states"; var text2 = "no states"; } else { var text = nameById.get(stateId); var text2 = text; } $("#map-legend").text(text); $("#bar-legend").text(text2); $("#line-legend").text(text2); } function proper(string) { return string.charAt(0).toUpperCase() + string.slice(1); } function findCenter(surveyResults,survey) { var p = 0; x = 0; y = 0; surveyResults.forEach(function(d) { var value = d.value, lat = centerById.get(+d.key)[0], lng = centerById.get(+d.key)[1]; p += value; x += (value*lat); y += (value*lng); }); var midLat = x/p, midLng = y/p; midpoint = [midLng,midLat]; var circleToMove = "#c-" + survey; d3.select(circleToMove) .transition() .attr("cx",midpoint[1]) .attr("cy",midpoint[0]) .duration(300); } function getLineData(survey,uniqArray,type) { hometownCross.filter(null); var array = []; uniqArray.forEach(function(d) { surveyCross.filterExact(survey); if (type == 'local') { hometownCross.filterExact(d); } else { hometownCross.filterFunction(function(s) { return s != d; }); } var group = namedGroup.top(100), repondents = getRespondents(hometownCross); results = group.filter(function(s) {return s.key == d; }); entry = {state:d,ppl:repondents,yes:results[0].value,survey:type} array.push(entry) }) return array; } function combineLineArrays(localArray,foreignArray) { var array = []; localArray.forEach( function(d) { var state = d.state; var localPpl = d.ppl; var localYes = d.yes; foreignState = foreignArray.filter(function(s) {return s.state == d.state; }); var foreignPpl = foreignState[0].ppl; var foreignYes = foreignState[0].yes; var entry = {state:state,localPpl:localPpl,localYes:localYes,foreignPpl:foreignPpl,foreignYes:foreignYes} array.push(entry) }) return array; } }) </script>
{{ dataSourceName(params.queryId) }}

The dataset is too large to view in browser

Export

Looks like something went wrong with your query.

{{ DS.queryRuns[params.queryId].errorMessage }}
This query was cancelled