Module: Chartnado::Series

Included in:
Evaluator::OperatorEvaluator, GroupBy, Renderer
Defined in:
lib/chartnado/series.rb,
lib/chartnado/series/wrap.rb

Defined Under Namespace

Classes: Wrap

Instance Method Summary collapse

Instance Method Details

#median(array) ⇒ Object

Returns Value.

Examples:

median([0,1]) => {0.5}
median([0,1,1,2,2]) => {1}

Returns:

  • Value



47
48
49
50
51
# File 'lib/chartnado/series.rb', line 47

def median(array)
  sorted = array.sort
  len = sorted.length
  (sorted[(len - 1) / 2] + sorted[len / 2]) / 2.0
end

#series_product(val, series, precision: 2) ⇒ Series/Multiple-Series

Examples:

series_product(2.0, {0 => 1}) => {0 => 2.0}
series_product({0 => 1}, 2.0) => {0 => 2.0}

Returns:



14
15
16
# File 'lib/chartnado/series.rb', line 14

def series_product(val, series, precision: 2)
  Wrap[series].times(val, precision: precision)
end

#series_ratio(top_series, bottom_series, multiplier: 1.0, precision: 2) ⇒ Series/Multiple-Series

Examples:

series_ratio({0 => 1}, 2.0) => {0 => 0.5}

Returns:



23
24
25
26
# File 'lib/chartnado/series.rb', line 23

def series_ratio(top_series, bottom_series, multiplier: 1.0, precision: 2)
  Wrap[top_series].
    over(bottom_series, multiplier: multiplier, precision: precision)
end

#series_sum(*series, scalar_sum: 0.0) ⇒ Series/Multiple-Series/Scalar

Examples:

series_sum({0 => 1}, 2.0) => {0 => 3.0}
series_sum({0 => 1}, {0 => 1}) => {0 => 2}
series_sum({0 => 1}, 2.0, 3.0) => {0 => 6.0}
series_sum(1, 2) => 3
series_sum() => []

Returns:



37
38
39
# File 'lib/chartnado/series.rb', line 37

def series_sum(*series, scalar_sum: 0.0)
  Wrap[series.shift].add(*series, scalar_sum: scalar_sum)
end