Class: BasicData

Inherits:
Object
  • Object
show all
Defined in:
lib/cmd_plot/basic_data.rb

Class Method Summary collapse

Class Method Details

.build_hist(data, bin_spec, maxcap = nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 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) ⇒ Object



3
4
5
# 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