Module: Charts::Grid

Included in:
BarChart
Defined in:
lib/charts/bar_chart/grid/grid.rb

Defined Under Namespace

Classes: GridLine, HorizontalGridLine, VerticalGridLine

Instance Method Summary collapse

Instance Method Details

#draw_gridObject



2
3
4
# File 'lib/charts/bar_chart/grid/grid.rb', line 2

def draw_grid
  lines.each { |l| l.draw }
end

#grid_line_valuesObject



11
12
13
14
15
16
17
18
19
20
# File 'lib/charts/bar_chart/grid/grid.rb', line 11

def grid_line_values
  (0..number_of_grid_lines).map do |i|
    value = i.to_f * rounded_spread / number_of_grid_lines + min_value
    if spread_log10 < 1
      value.round(-spread_order_of_magnitude + 1)
    else
      value.round
    end
  end
end

#linesObject



6
7
8
9
# File 'lib/charts/bar_chart/grid/grid.rb', line 6

def lines
  grid_line_class = vertical? ? HorizontalGridLine : VerticalGridLine
  grid_line_values.map { |v| grid_line_class.new(self, v) }
end

#number_of_grid_linesObject



22
23
24
# File 'lib/charts/bar_chart/grid/grid.rb', line 22

def number_of_grid_lines
  (3..7).find { |line_count| spread_factor % line_count == 0 } || 4
end

#rounded_spreadObject



38
39
40
41
# File 'lib/charts/bar_chart/grid/grid.rb', line 38

def rounded_spread
  rs = spread_factor * 10 ** spread_order_of_magnitude
  spread_log10 % 1 == 0 ? rs / 10 : rs
end

#spreadObject



26
27
28
# File 'lib/charts/bar_chart/grid/grid.rb', line 26

def spread
  max_value - min_value
end

#spread_factorObject



43
44
45
46
# File 'lib/charts/bar_chart/grid/grid.rb', line 43

def spread_factor
  f = (spread.to_f / 10 ** spread_order_of_magnitude).floor
  spread_log10 % 1 == 0 ? 10 * f : f
end

#spread_log10Object



34
35
36
# File 'lib/charts/bar_chart/grid/grid.rb', line 34

def spread_log10
  Math.log10(spread)
end

#spread_order_of_magnitudeObject



30
31
32
# File 'lib/charts/bar_chart/grid/grid.rb', line 30

def spread_order_of_magnitude
  spread_log10.floor
end