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
|