Guest User

Untitled

a guest
Sep 18th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. //Try changing all these parameters
  2. //Layout properties
  3. var w = 700
  4. , h = 500
  5. , n = 25
  6. , m = 40
  7. , spacing = 65
  8. , opacity = 0.8
  9. , stroke_width = 15
  10.  
  11. //Sin wave function
  12. //y = amplitude * sin( omega * theta + phase)
  13. var amplitude = 15
  14. , theta = Math.PI * 3.5
  15. , omega = -0.1
  16. , phase = -0.5
  17.  
  18.  
  19. var lines = [ ];
  20. for (i in d3.range(n)) {
  21.  
  22. var data = d3.range(m)
  23. lines.push({
  24. index: i,
  25. data: data
  26. })
  27. }
  28.  
  29. var xscale = d3.scale.linear()
  30. .domain([0, m])
  31. .range([-20, w])
  32.  
  33. function line_maker( data ) {
  34. var freq = omega * data.index
  35. var svgline = d3.svg.line()
  36. .x(function(d,i) {
  37. return xscale(d);
  38. })
  39. .y(function(d,i) {
  40. var th = d/m * theta
  41. var ph = (n-data.index) * phase
  42. var y = amplitude * Math.sin(freq * th + ph );
  43. return y
  44. })
  45. .interpolate("basis")
  46. //.interpolate("linear")
  47. return svgline(data.data);
  48. }
  49.  
  50. function lineenter(d, i) {
  51. d3.select(this).selectAll("path.path")
  52. .data([d])
  53. .enter()
  54. .append("svg:path")
  55. .attr("class", "path")
  56. .attr("stroke-width", stroke_width)
  57. //.attr("stroke-width", function(e,i) { return e.width;})
  58. .attr("stroke", "#fff")
  59. .attr("fill", "none")
  60. update_spacing()
  61. }
  62.  
  63. function update_spacing()
  64. {
  65. var th = spacing * n;
  66. var hscale = d3.scale.linear()
  67. .domain([0, n])
  68. .range([0, h])
  69. d3.selectAll("g.line path")
  70. .attr("transform", function(d, i) {
  71. //return "translate(" + [0, th - spacing * d.index] + ")";
  72. return "translate(" + [0, 40+h/2 + th / 2 - spacing * d.index] + ")";
  73. })
  74. }
  75.  
  76. var svg = d3.select("svg")
  77. .attr("width", w)
  78. .attr("height", h)
  79. .append("svg:g")
  80.  
  81. var line = svg.selectAll("g.line")
  82. .data(lines)
  83. .enter().append("svg:g")
  84. .attr("class", "line")
  85. .each(lineenter);
  86.  
  87.  
  88. var color = d3.scale.linear()
  89. .domain([0, n])
  90. //.interpolate(d3.interpolateRgb)
  91. .interpolate(d3.interpolateHsl)
  92. .range(['#D40067', '#4DA9DF'])
  93.  
  94. /*
  95. var opacity = d3.scale.linear()
  96. .domain([0, n])
  97. .range([1, .4])
  98. */
  99.  
  100. d3.selectAll("g.line path")
  101. .attr("d", function(d,i) {
  102. return line_maker(d)
  103. })
  104. .attr("stroke", function(d,i) { return color(d.index);})
  105. .attr("opacity", opacity);
Add Comment
Please, Sign In to add comment