graphing.js.coffee 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #= require d3
  2. #= require rickshaw
  3. #= require_self
  4. window.renderGraph = ($chart, data, peaks, name) ->
  5. graph = new Rickshaw.Graph
  6. element: $chart.find(".chart").get(0)
  7. width: 700
  8. height: 240
  9. series: [
  10. data: data
  11. name: name
  12. color: 'steelblue'
  13. ]
  14. x_axis = new Rickshaw.Graph.Axis.Time(graph: graph)
  15. annotator = new Rickshaw.Graph.Annotate
  16. graph: graph
  17. element: $chart.find(".timeline").get(0)
  18. $.each peaks, ->
  19. annotator.add this, "Peak"
  20. y_axis = new Rickshaw.Graph.Axis.Y
  21. graph: graph
  22. orientation: 'left'
  23. tickFormat: Rickshaw.Fixtures.Number.formatKMBT
  24. element: $chart.find(".y-axis").get(0)
  25. graph.onUpdate ->
  26. mean = d3.mean data, (i) -> i.y
  27. standard_deviation = Math.sqrt(d3.mean(data.map((i) -> Math.pow(i.y - mean, 2))))
  28. minX = d3.min data, (i) -> i.x
  29. maxX = d3.max data, (i) -> i.x
  30. graph.vis.append("svg:line")
  31. .attr('x1', graph.x(minX))
  32. .attr('x2', graph.x(maxX))
  33. .attr('y1', graph.y(mean))
  34. .attr('y2', graph.y(mean))
  35. .attr 'class', 'summary-statistic mean'
  36. graph.vis.append("svg:line")
  37. .attr('x1', graph.x(minX))
  38. .attr('x2', graph.x(maxX))
  39. .attr('y1', graph.y(mean + standard_deviation))
  40. .attr('y2', graph.y(mean + standard_deviation))
  41. .attr 'class', 'summary-statistic one-std'
  42. graph.vis.append("svg:line")
  43. .attr('x1', graph.x(minX))
  44. .attr('x2', graph.x(maxX))
  45. .attr('y1', graph.y(mean + 2 * standard_deviation))
  46. .attr('y2', graph.y(mean + 2 * standard_deviation))
  47. .attr 'class', 'summary-statistic two-std'
  48. graph.vis.append("svg:line")
  49. .attr('x1', graph.x(minX))
  50. .attr('x2', graph.x(maxX))
  51. .attr('y1', graph.y(mean + 3 * standard_deviation))
  52. .attr('y2', graph.y(mean + 3 * standard_deviation))
  53. .attr 'class', 'summary-statistic three-std'
  54. graph.render()