Packages

GGity brings the familiar interface of R's ggplot2 library to SVG charting in Elixir.

Current section

Files

Jump to
ggity lib ggity scale size_continuous.ex
Raw

lib/ggity/scale/size_continuous.ex

defmodule GGity.Scale.Size.Continuous do
@moduledoc false
alias GGity.Scale.Size
@type t() :: %__MODULE__{}
defstruct range: {9, 100},
transform: nil
@spec new(keyword()) :: Size.Continuous.t()
def new(options \\ []), do: struct(Size.Continuous, options)
@spec train(Size.Continuous.t(), {number(), number()}) :: Size.Continuous.t()
def train(scale, {value_min, value_max}) do
domain = value_max - value_min
{range_min, range_max} = scale.range
range = range_max - range_min
struct(scale,
transform: fn value -> :math.sqrt(range_min + (value - value_min) / domain * range) end
)
end
end