YouPlot/lib/youplot/backends/processing.rb

37 lines
828 B
Ruby
Raw Normal View History

# frozen_string_literal: true
module YouPlot
# plotting functions.
module Backends
module Processing
module_function
2021-05-31 21:50:11 +08:00
def count_values(arr, tally: true, reverse: false)
# tally was added in Ruby 2.7
2021-05-31 21:50:11 +08:00
result = \
if tally && Enumerable.method_defined?(:tally)
arr.tally
else
# value_counts Enumerable::Statistics
arr.value_counts(dropna: false)
end
2021-05-31 21:50:11 +08:00
# sorting
result = result.sort do |a, b|
# compare values
r = b[1] <=> a[1]
# If the values are the same, compare by name
2021-06-03 10:03:49 +08:00
r = a[0] <=> b[0] if r.zero?
2021-05-31 21:50:11 +08:00
r
end
# --reverse option
result.reverse! if reverse
# prepare for barplot
result.transpose
end
end
end
end