class Iroki::Color::SingleGroupGradient

Attributes

counts[RW]
rel_abunds[RW]

Public Class Methods

new(samples, counts, single_color=false, min_lumin, max_lumin) click to toggle source
# File lib/iroki/color/single_group_gradient.rb, line 24
def initialize samples,
               counts,
               single_color=false,
               min_lumin,
               max_lumin

  abort_unless samples.count == counts.count,
               "Samples (#{samples.count}) and counts " +
               "#{counts.count} are different size."

  @min_lumin = min_lumin
  @max_lumin = max_lumin

  @single_color = single_color
  @samples = samples
  @counts = counts
  @rel_abunds = counts_to_rabunds counts
  @lumins = rabunds_to_lumins @rel_abunds

  if @single_color
    @color_hex_codes = single_color_gradient_hex_codes
  else
    @color_hex_codes = two_color_gradient_hex_codes
  end
end

Public Instance Methods

single_color_gradient_hex_codes() click to toggle source
# File lib/iroki/color/single_group_gradient.rb, line 63
def single_color_gradient_hex_codes
  @rel_abunds.zip(@lumins).map do |rel_abund, lumin|
    amt_of_orig_color =
      scale rel_abund, new_min=@min_lumin, new_max=@max_lumin

    col =
      Iroki::Color::DARK_GREEN.lighten_by amt_of_orig_color

    col.html
  end
end
two_color_gradient_hex_codes() click to toggle source
# File lib/iroki/color/single_group_gradient.rb, line 50
def two_color_gradient_hex_codes
  @rel_abunds.map.with_index do |rel_abund, idx|
    lumin = @lumins[idx]

    col =
      Iroki::Color::GREEN.mix_with Iroki::Color::BLUE, rel_abund

    col.luminosity = lumin

    col.html
  end
end