Advertisement
Guest User

Untitled

a guest
Dec 6th, 2012
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <meta charset="utf-8">
  3. <style>
  4.  
  5. body {
  6.   font: 10px sans-serif;
  7. }
  8.  
  9. .axis path,
  10. .axis line {
  11.   fill: none;
  12.   stroke: #000;
  13.   shape-rendering: crispEdges;
  14. }
  15.  
  16. .x.axis path {
  17.   display: none;
  18. }
  19.  
  20. .line {
  21.   fill: none;
  22.   stroke: steelblue;
  23.   stroke-width: 1.5px;
  24. }
  25.  
  26. </style>
  27. <body>
  28. <script src="d3.v3.js"></script>
  29. <script>
  30.  
  31. var margin = {top: 20, right: 80, bottom: 30, left: 50},
  32.     width = 960 - margin.left - margin.right,
  33.     height = 500 - margin.top - margin.bottom;
  34.  
  35. var parseDate = d3.time.format("%Y%m%d").parse;
  36.  
  37. var x = d3.time.scale()
  38.     .range([0, width]);
  39.  
  40. var y = d3.scale.linear()
  41.     .range([height, 0]);
  42.  
  43. var color = d3.scale.category10();
  44.  
  45. var xAxis = d3.svg.axis()
  46.     .scale(x)
  47.     .orient("bottom");
  48.  
  49. var yAxis = d3.svg.axis()
  50.     .scale(y)
  51.     .orient("left");
  52.  
  53. var line = d3.svg.line()
  54.     .interpolate("basis")
  55.     .x(function(d) { return x(d.Unixtime); })
  56.     .y(function(d) { return y(d.value); });
  57.  
  58. var svg = d3.select("body").append("svg")
  59.     .attr("width", width + margin.left + margin.right)
  60.     .attr("height", height + margin.top + margin.bottom)
  61.   .append("g")
  62.     .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
  63.  
  64. d3.tsv("streamvalues.tsv", function(error, data) {
  65.   color.domain(d3.keys(data[0]).filter(function(key) { return key !== "Unixtime"; }));
  66.  
  67.   data.forEach(function(d) {
  68.     d.Unixtime = parseInt(d.Unixtime/1000);
  69.   });
  70.  
  71.   var cities = color.domain().map(function(name) {
  72.     return {
  73.       name: name,
  74.       values: data.map(function(d) {
  75.         return {Unixtime: d.Unixtime, value: +d[name]};
  76.       })
  77.     };
  78.   });
  79.  
  80.   x.domain(d3.extent(data, function(d) { return d.Unixtime; }));
  81.  
  82.   y.domain([
  83.     d3.min(cities, function(c) { return d3.min(c.values, function(v) { return v.value; }); }),
  84.     d3.max(cities, function(c) { return d3.max(c.values, function(v) { return v.value; }); })
  85.   ]);
  86.  
  87.   svg.append("g")
  88.       .attr("class", "x axis")
  89.       .attr("transform", "translate(0," + height + ")")
  90.       .call(xAxis);
  91.  
  92.   svg.append("g")
  93.       .attr("class", "y axis")
  94.       .call(yAxis)
  95.     .append("text")
  96.       .attr("transform", "rotate(-90)")
  97.       .attr("y", 6)
  98.       .attr("dy", ".71em")
  99.       .style("text-anchor", "end")
  100.       .text("Temperature (ยบF)");
  101.  
  102.   var city = svg.selectAll(".city")
  103.       .data(cities)
  104.     .enter().append("g")
  105.       .attr("class", "city");
  106.  
  107.   city.append("path")
  108.       .attr("class", "line")
  109.       .attr("d", function(d) { return line(d.values); })
  110.       .style("stroke", function(d) { return color(d.name); });
  111.  
  112.   city.append("text")
  113.       .datum(function(d) { return {name: d.name, value: d.values[d.values.length - 1]}; })
  114.       .attr("transform", function(d) { return "translate(" + x(d.value.Unixtime) + "," + y(d.value.value) + ")"; })
  115.       .attr("x", 3)
  116.       .attr("dy", ".35em")
  117.       .text(function(d) { return d.name; });
  118. });
  119.  
  120. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement