Module: YouPlot::Backends::Processing

Defined in:
lib/youplot/backends/processing.rb

Class Method Summary collapse

Class Method Details

.count_values(arr, tally: true) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/youplot/backends/processing.rb', line 9

def count_values(arr, tally: true)
  # tally was added in Ruby 2.7
  if tally && Enumerable.method_defined?(:tally)
    arr.tally
  else
    # value_counts Enumerable::Statistics
    arr.value_counts(dropna: false)
  end
    .sort do |a, b|
      # compare values
      r = b[1] <=> a[1]
      # If the values are the same, compare by name
      r = a[0] <=> b[0] if r == 0
      r
    end
    .transpose
end