Guest User

Untitled

a guest
May 22nd, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.16 KB | None | 0 0
  1. <html lang='en'>
  2. <head>
  3. <meta charset='utf-8'>
  4.  
  5. <style>
  6. .bar {
  7. fill: steelblue;
  8. }
  9. .bar:hover {
  10. fill: brown;
  11. }
  12. </style>
  13.  
  14. <title>Bar</title>
  15. <script src='https://d3js.org/d3.v5.js' charset='utf-8'></script>
  16. <script src='https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'></script>
  17. </head>
  18.  
  19. <body>
  20.  
  21. <div id='year-selector-container'>
  22. <input id='year-slider' class='year-range' type='range' min='2000' max='2005' value='2004'>
  23. Year: <span id='year-span'>2004</span>
  24. </div>
  25.  
  26. <div id='type-selector-container'>
  27. <form id='type-selector'>
  28. <input type='radio' name='type-selector' id='rb-1' value='type1' checked />
  29. <label for='rb-1'>Type 1</label>
  30.  
  31. <input type='radio' name='type-selector' id='rb-2' value='type2' />
  32. <label for='rb-2'>Type 2</label>
  33.  
  34. <input type='radio' name='type-selector' id='rb-3' value='type3' />
  35. <label for='rb-3'>Type 3</label>
  36. </form>
  37. </div>
  38.  
  39. <div id='barchart'></div>
  40.  
  41. <script>
  42. var data = [
  43. {"year": 2000, "type1": 30, "type2": 40, "type3": 30},
  44. {"year": 2001, "type1": 75.5, "type2": 4.5, "type3": 30},
  45. {"year": 2002, "type1": 0, "type2": 90, "type3": 10},
  46. {"year": 2003, "type1": 15, "type2": 20, "type3": 65},
  47. {"year": 2004, "type1": 20, "type2": 40, "type3": 40},
  48. {"year": 2005, "type1": 50, "type2": 25, "type3": 25}
  49. ];
  50.  
  51. var yearSelected = d3.select('#year-span').text();
  52. var typeSelected = document.querySelector('input[name=type-selector]:checked', '#type-selector').value;
  53. console.log('yearSelected:', yearSelected);
  54. console.log('typeSelected:', typeSelected);
  55.  
  56. var svg = d3.select("#barchart").append("svg").attr("width", 450).attr("height", 200);
  57. var margin = {top: 20, right: 20, bottom: 30, left: 40};
  58. var width = +svg.attr("width") - margin.left - margin.right;
  59. var height = +svg.attr("height") - margin.top - margin.bottom;
  60.  
  61. var x = d3.scaleBand().rangeRound([0, width]).padding(0.1);
  62. var y = d3.scaleLinear().rangeRound([height, 0]);
  63.  
  64. var g = svg.append("g").attr("transform", "translate(" + margin.left + ", " + margin.top + ")");
  65.  
  66. x.domain(data.map(function(d) {
  67. return d.year;
  68. }));
  69. y.domain([0, d3.max(data, function(d) {
  70. if(typeSelected == 'type1') return d.type1;
  71. if(typeSelected == 'type2') return d.type2;
  72. if(typeSelected == 'type2') return d.type3;
  73. })]);
  74.  
  75. g.append("g")
  76. .attr("class", "axis axis--x")
  77. .attr("transform", "translate(0," + height + ")")
  78. .call(d3.axisBottom(x));
  79.  
  80. g.append("g")
  81. .attr("class", "axis axis--y")
  82. .call(d3.axisLeft(y).ticks(10, "%"))
  83. .append("text")
  84. .attr("transform", "rotate(-90)")
  85. .attr("y", 6)
  86. .attr("dy", "0.71em")
  87. .attr("text-anchor", "end");
  88.  
  89. // return the right data
  90. function getData(type) {
  91. var arr = [];
  92. data.forEach(function(item) {
  93. if(type == 'type1') arr.push({"year": item.year, "value": item.type1});
  94. if(type == 'type2') arr.push({"year": item.year, "value": item.type2});
  95. if(type == 'type3') arr.push({"year": item.year, "value": item.type3});
  96. });
  97. return arr;
  98. }
  99.  
  100. var initialData = getData('type1');
  101. draw(initialData);
  102.  
  103. // draw barchart
  104. function draw(data) {
  105. g.selectAll(".bar")
  106. .data(data)
  107. .enter().append("rect")
  108. .attr("class", "bar")
  109. .attr("x", function(d) {
  110. return x(d.year);
  111. })
  112. .attr("y", function(d) {
  113. return y(d.value);
  114. })
  115. .attr("width", x.bandwidth())
  116. .attr("height", function(d) {
  117. return height - y(d.value);
  118. });
  119. } // end draw
  120.  
  121. var updateRadio = function() {
  122. typeSelected = document.querySelector('input[name=type-selector]:checked', '#type-selector').value;
  123. console.log('typeSelected:', typeSelected);
  124. d3.selectAll('rect').remove();
  125. draw(getData(typeSelected));
  126. }
  127.  
  128. var updateSlider = function() {
  129. var slider = document.getElementById('year-slider');
  130. var output = document.getElementById('year-span');
  131. yearSelected = slider.value;
  132. output.innerHTML = yearSelected;
  133. console.log('yearSelected:', yearSelected);
  134. }
  135.  
  136. d3.select('#type-selector').on('change', updateRadio);
  137. d3.select('#year-slider').on('input', updateSlider);
  138. </script>
  139.  
  140. </body>
  141. </html>
  142.  
  143. <html lang='en'>
  144. <head>
  145. <meta charset='utf-8'>
  146.  
  147. <style>
  148. .arc text {
  149. font: 10px sans-serif;
  150. text-anchor: middle;
  151. }
  152.  
  153. .arc path {
  154. stroke: #fff;
  155. }
  156. </style>
  157.  
  158. <title>Donut</title>
  159. <script src='https://d3js.org/d3.v5.js' charset='utf-8'></script>
  160. <script src='https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'></script>
  161. </head>
  162.  
  163. <body>
  164.  
  165. <div id='year-selector-container'>
  166. <input id='year-slider' class='year-range' type='range' min='2000' max='2005' value='2004'>
  167. Year: <span id='year-span'>2004</span>
  168. </div>
  169.  
  170. <div id='type-selector-container'>
  171. <form id='type-selector'>
  172. <input type='radio' name='type-selector' id='rb-1' value='type1' checked />
  173. <label for='rb-1'>Type 1</label>
  174.  
  175. <input type='radio' name='type-selector' id='rb-2' value='type2' />
  176. <label for='rb-2'>Type 2</label>
  177.  
  178. <input type='radio' name='type-selector' id='rb-3' value='type3' />
  179. <label for='rb-3'>Type 3</label>
  180. </form>
  181. </div>
  182.  
  183. <div id='donutchart'></div>
  184.  
  185. <script>
  186. var data = [
  187. {"year": 2000, "type1": 30, "type2": 40, "type3": 30},
  188. {"year": 2001, "type1": 75.5, "type2": 4.5, "type3": 30},
  189. {"year": 2002, "type1": 0, "type2": 90, "type3": 10},
  190. {"year": 2003, "type1": 15, "type2": 20, "type3": 65},
  191. {"year": 2004, "type1": 20, "type2": 40, "type3": 40},
  192. {"year": 2005, "type1": 50, "type2": 25, "type3": 25}
  193. ];
  194.  
  195. var yearSelected = d3.select('#year-span').text();
  196. var typeSelected = document.querySelector('input[name=type-selector]:checked', '#type-selector').value;
  197. console.log('yearSelected:', yearSelected);
  198. console.log('typeSelected:', typeSelected);
  199.  
  200. data = d3.nest()
  201. .key(function(d) {
  202. return d.year;
  203. })
  204. .object(data);
  205. console.log('ndata:', data);
  206.  
  207. var width = 400;
  208. var height = 200;
  209. var radius = Math.min(width, height) / 2;
  210.  
  211. var color = d3.scaleOrdinal()
  212. .range(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56", "#d0743c", "#ff8c00"]);
  213.  
  214. var arc = d3.arc()
  215. .outerRadius(radius - 10)
  216. .innerRadius(radius - 60);
  217.  
  218. var pie = d3.pie()
  219. .sort(null)
  220. .value(function(d) {
  221. return d.value;
  222. });
  223.  
  224. var svg = d3.select("#donutchart").append("svg")
  225. .attr("width", width)
  226. .attr("height", height);
  227.  
  228. // return the right data
  229. function getData(year) {
  230. var filterData = data[year].slice();
  231. console.log('nfilterData:', filterData);
  232. var arr = [{"typeData": "type1", "value": filterData[0].type1}, {"typeData": "type2", "value": filterData[0].type2}, {"typeData": "type3", "value": filterData[0].type3}];
  233. console.log('arr:', arr);
  234. return arr;
  235. }
  236.  
  237. var initialData = getData(yearSelected);
  238. draw(initialData);
  239.  
  240. function draw(data) {
  241. var svgG = svg.append("g")
  242. .attr('class', 'svgG')
  243. .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")");
  244.  
  245. var g = svgG.selectAll(".arc")
  246. .data(pie(data))
  247. .enter()
  248. .append("g")
  249. .attr("class", "arc");
  250.  
  251. g.append("path")
  252. .attr("d", arc)
  253. .style("fill", function(d) {
  254. return color(d.data.typeData);
  255. });
  256.  
  257. g.append("text")
  258. .attr("transform", function(d) {
  259. return "translate(" + arc.centroid(d) + ")";
  260. })
  261. .attr("dy", ".35em")
  262. .text(function(d) {
  263. return d.data.typeData;
  264. });
  265. }
  266.  
  267. var updateRadio = function() {
  268. typeSelected = document.querySelector('input[name=type-selector]:checked', '#type-selector').value;
  269. console.log('typeSelected:', typeSelected);
  270. }
  271.  
  272. var updateSlider = function() {
  273. var slider = document.getElementById('year-slider');
  274. var output = document.getElementById('year-span');
  275. yearSelected = slider.value;
  276. output.innerHTML = yearSelected;
  277. console.log('yearSelected:', yearSelected);
  278. d3.selectAll('.svgG').remove();
  279. draw(getData(yearSelected));
  280. }
  281.  
  282. d3.select('#type-selector').on('change', updateRadio);
  283. d3.select('#year-slider').on('input', updateSlider);
  284. </script>
  285.  
  286. </body>
  287. </html>
Add Comment
Please, Sign In to add comment