项目作者: OlegRyzhkov2020

项目描述 :
Interactive dashboard, Census Data analysis
高级语言: JavaScript
项目地址: git://github.com/OlegRyzhkov2020/D3-challenge.git
创建时间: 2020-09-25T22:04:07Z
项目社区:https://github.com/OlegRyzhkov2020/D3-challenge

开源协议:

下载


D3-challenge

  • Build an interactive dashboard to analyze Census Data

The data set is based on 2014 ACS 1-year estimates: https://factfinder.census.gov/faces/nav/jsf/pages/searchresults.xhtml

GitHub last commit
GitHub top language
made-with-Markdown
HitCount
GitHub watchers
GitHub followers

Dashboard

dashboard_slide

Census Data Site

dashboard_slide

Dataset Exploring

  1. // Retrieve data from the CSV file and execute everything below
  2. d3.csv("data/data.csv").then(function(censusData, err) {
  3. if (err) throw err;
  4. // parse data
  5. censusData.forEach(function(data) {
  6. data.poverty = +data.poverty;
  7. data.smokes = +data.smokes;
  8. data.health = +data.healthcare;
  9. data.income = +data.income;
  10. data.age = +data.age;
  11. data.obesity = +data.obesity;
  12. data.state = data.state;
  13. });

D3 Library

  1. // Create an SVG wrapper, append an SVG group that will hold our chart,
  2. // and shift the latter by left and top margins.
  3. var svg = d3
  4. .select(".chart")
  5. .append("svg")
  6. .attr("width", svgWidth)
  7. .attr("height", svgHeight);
  8. // Append an SVG group
  9. var chartGroup = svg.append("g")
  10. .attr("transform", `translate(${margin.left}, ${margin.top})`);
  11. // Initial Params
  12. var chosenXAxis = "income";
  13. var chosenYAxis = "poverty";
  14. // function used for updating x-scale var upon click on axis label
  15. function xScale(censusData, chosenXAxis) {
  16. // create scales
  17. var xLinearScale = d3.scaleLinear()
  18. .domain([d3.min(censusData, d => d[chosenXAxis]) * 0.8,
  19. d3.max(censusData, d => d[chosenXAxis]) * 1.2
  20. ])
  21. .range([0, width]);
  22. return xLinearScale;
  23. }
  24. // function used for updating y-scale var upon click on axis label
  25. function yScale(censusData, chosenYAxis) {
  26. // create scales
  27. var yLinearScale = d3.scaleLinear()
  28. .domain([d3.min(censusData, d => d[chosenYAxis])-2, d3.max(censusData, d => d[chosenYAxis])])
  29. .range([height, 0]);
  30. return yLinearScale;
  31. }

Regression

  1. function regr_equation(XaxisData, Yaxisdata) {
  2. var ReduceAddition = function(prev, cur) { return prev + cur; };
  3. // finding the mean of Xaxis and Yaxis data
  4. var xBar = XaxisData.reduce(ReduceAddition) * 1.0 / XaxisData.length;
  5. var yBar = Yaxisdata.reduce(ReduceAddition) * 1.0 / Yaxisdata.length;
  6. var SquareXX = XaxisData.map(function(d) { return Math.pow(d - xBar, 2); })
  7. .reduce(ReduceAddition);
  8. var ssYY = Yaxisdata.map(function(d) { return Math.pow(d - yBar, 2); })
  9. .reduce(ReduceAddition);
  10. var MeanDiffXY = XaxisData.map(function(d, i) { return (d - xBar) * (Yaxisdata[i] - yBar); })
  11. .reduce(ReduceAddition);
  12. var slope = MeanDiffXY / SquareXX;
  13. var intercept = yBar - (xBar * slope);
  14. return [slope, intercept];
  15. }

Contacts

Find Me on
LinkedIn