class BasicData

Public Class Methods

build_hist(data, bin_spec, maxcap = nil) click to toggle source
# File lib/cmd_plot/basic_data.rb, line 7
def self.build_hist(data, bin_spec, maxcap = nil)
    min = data.min
    max = data.max
    if bin_spec.kind_of?(Array)
        limits = bin_spec
        nr_bins = limits.length - 1
    else
        limits = BasicData.linspace(min, max, bin_spec + 1)
        nr_bins = bin_spec
    end
    counts = Array.new(nr_bins, 0)
    for d in data
        bin = limits.map { |x| d < x }.index(true)
        if bin.nil?
            bin = counts.length
        end
        if bin == 0
            bin = 1
        end
        counts[bin - 1] += 1
    end
    counts = counts.map { |v| [v, maxcap].min } unless maxcap.nil?
    bin_centers = limits.each_cons(2).to_a.map { |a| (a[0] + a[1]) / 2.0 }
    return counts, bin_centers
end
linspace(min, max, n) click to toggle source
# File lib/cmd_plot/basic_data.rb, line 3
def self.linspace(min, max, n)
    return Array.new(n) { |i| min.to_f + i.to_f * (max.to_f - min.to_f) / (n - 1).to_f }
end