draw-lines.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. function drawLines(divId, lines, intervals, boundaries) {
  2. var xs = boundaries.xs;
  3. var ys = boundaries.ys;
  4. var marginBottomLabel = 0;
  5. var width = 300;
  6. var height = width * (ys.length / xs.length);
  7. var xScale = d3.scale.linear()
  8. .range([0, width])
  9. .domain([Math.min.apply(null, xs), Math.max.apply(null, xs)]);
  10. var yScale = d3.scale.linear()
  11. .range([0, height])
  12. .domain([Math.min.apply(null, ys), Math.max.apply(null, ys)]);
  13. var colours = d3.scale.linear().domain([intervals[0], intervals[intervals.length - 1]])
  14. .range([d3.rgb(200, 200, 200), d3.rgb(0, 0, 0)]);
  15. var svg = d3.select(divId)
  16. .append("svg")
  17. .attr("width", width)
  18. .attr("height", height + marginBottomLabel);
  19. svg.selectAll("path")
  20. .data(lines)
  21. .enter().append("path")
  22. .style("fill", function (d) {
  23. return colours(d.val);
  24. })
  25. .style("stroke", "black")
  26. .style('opacity', 1.0)
  27. .attr("d", function (d) {
  28. var p = "";
  29. d.coords.forEach(function (aa) {
  30. p += (d3.svg.line()
  31. .x(function (dat) {
  32. return xScale(dat[0]);
  33. })
  34. .y(function (dat) {
  35. return yScale(dat[1]);
  36. })
  37. .interpolate("linear")
  38. )(aa) + "Z";
  39. });
  40. return p;
  41. })
  42. .on('mouseover', function () {
  43. d3.select(this).style('fill', d3.rgb(204, 185, 116));
  44. })
  45. .on('mouseout', function () {
  46. d3.select(this).style('fill', function (d1) {
  47. return colours(d1.val);
  48. })
  49. });
  50. }