area.html 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <html>
  2. <head>
  3. <title>Area Chart</title>
  4. <script type="text/javascript" src="../protovis-d3.1.js"></script>
  5. </head>
  6. <body>
  7. <script type="text/javascript+protovis">
  8. var data = pv.range(0, 10, .1).map(function(x) {
  9. return {x: x, y: Math.sin(x) + Math.random() * .5 + 2};
  10. }),
  11. w = 400,
  12. h = 200,
  13. x = pv.Scale.linear(data, function(d) d.x).range(0, w),
  14. y = pv.Scale.linear(0, 4).range(0, h);
  15. var vis = new pv.Panel()
  16. .width(w)
  17. .height(h)
  18. .bottom(20)
  19. .left(20)
  20. .right(10)
  21. .top(5)
  22. .strokeStyle("#ccc");
  23. vis.add(pv.Rule)
  24. .data(y.ticks())
  25. .visible(function() !(this.index % 2))
  26. .bottom(function(d) Math.round(y(d)) - .5)
  27. .strokeStyle("#eee")
  28. .anchor("left").add(pv.Label)
  29. .text(function(d) d.toFixed(1));
  30. vis.add(pv.Rule)
  31. .data(x.ticks())
  32. .visible(function(d) d > 0)
  33. .left(function(d) Math.round(x(d)) - .5)
  34. .strokeStyle("#eee")
  35. .anchor("bottom").add(pv.Label)
  36. .text(function(d) d.toFixed());
  37. vis.add(pv.Area)
  38. .data(data)
  39. .left(function(d) x(d.x))
  40. .bottom(0)
  41. .height(function(d) y(d.y))
  42. .fillStyle("rgba(31,119,180,.6)")
  43. .anchor("top").add(pv.Line)
  44. .lineWidth(3)
  45. .fillStyle(null);
  46. vis.render();
  47. </script>
  48. </body>
  49. </html>