class Toji::Progress::Graph::Ab
Public Class Methods
new()
click to toggle source
# File lib/toji/progress/graph/ab.rb, line 5 def initialize @coef = 1.0 @actuals = [] @expects = [] end
Public Instance Methods
actual(moromi, name=:actual)
click to toggle source
# File lib/toji/progress/graph/ab.rb, line 16 def actual(moromi, name=:actual) @actuals << [moromi, name] self end
coef(coef)
click to toggle source
# File lib/toji/progress/graph/ab.rb, line 11 def coef(coef) @coef = coef self end
expect(alcohol, nihonshudo)
click to toggle source
# File lib/toji/progress/graph/ab.rb, line 21 def expect(alcohol, nihonshudo) @expects << [alcohol.to_f, nihonshudo.to_f] self end
expects(expects)
click to toggle source
# File lib/toji/progress/graph/ab.rb, line 26 def expects(expects) expects.each {|o| expect(o.alcohol, o.nihonshudo) } self end
max_baume()
click to toggle source
# File lib/toji/progress/graph/ab.rb, line 64 def max_baume @actuals.map {|moromi, name| moromi.states.map(&:baume).compact.max }.compact.max || 0.0 end
min_baume()
click to toggle source
# File lib/toji/progress/graph/ab.rb, line 58 def min_baume @actuals.map {|moromi, name| moromi.states.map(&:baume).compact.min }.compact.min || 0.0 end
plot()
click to toggle source
# File lib/toji/progress/graph/ab.rb, line 70 def plot #_min_baume = [min_baume-1, 0].min _min_baume = 0 _max_baume = [max_baume+1, 10].max Plotly::Plot.new( data: plot_data, layout: { xaxis: { title: "Alcohol", dtick: 2, range: [0, 20], }, yaxis: { title: "Baume", dtick: 1, range: [_min_baume, _max_baume], } } ) end
plot_data()
click to toggle source
# File lib/toji/progress/graph/ab.rb, line 33 def plot_data result = [] @actuals.each {|moromi, name| states = moromi.states.select{|s| s.alcohol && s.baume} xs = states.map(&:alcohol) ys = states.map(&:baume) texts = states.map{|s| "%s<br />alc=%s, be=%s" % [s.display_time, s.alcohol, s.baume]} result << {x: xs, y: ys, text: texts, name: name} } @expects.each {|alcohol, nihonshudo| ys = [0.0, 8.0] xs = ys.map{|b| alcohol - (b - nihonshudo * -0.1) * @coef} name = "%s%s %s" % [nihonshudo<0 ? "" : "+", nihonshudo, alcohol] result << {x: xs, y: ys, name: name} } result end