Method: Statsample::Graph::Histogram#rubyvis_normal_distribution

Defined in:
lib/statsample/graph/histogram.rb

#rubyvis_normal_distribution(pan) ⇒ Object

[View source] [View on GitHub]

80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/statsample/graph/histogram.rb', line 80

def rubyvis_normal_distribution(pan)
  x_scale=@x_scale
  y_scale=@y_scale
  
  wob = @hist.get_range(0)[1] - @hist.get_range(0)[0]
  
  nob = ((@maximum_x-@minimum_x) / wob.to_f).floor
  sum=@hist.sum
  
  data=nob.times.map {|i|
    l=@minimum_x+i*wob
    r=@minimum_x+(i+1)*wob          
    middle=(l+r) / 2.0
    pi=Distribution::Normal.cdf((r-@mean) / @sd) - Distribution::Normal.cdf((l-@mean) / @sd)
    {:x=>middle, :y=>pi*sum}
  }
  pan.line do |l|
    l.data data
    l.interpolate "cardinal"
    l.stroke_style "black"
    l.bottom {|d| y_scale[d[:y]]}
    l.left {|d| x_scale[d[:x]]}
  end
  
end