Packages

A simple Elixir charting library that generates easy-to-customize charts.

Current section

Files

Jump to
uncharted lib live_chart column_chart base_chart_impl.ex
Raw

lib/live_chart/column_chart/base_chart_impl.ex

defimpl LiveChart.ColumnChart, for: LiveChart.BaseChart do
alias LiveChart.BaseChart
alias LiveChart.ColumnChart.{Column, Dataset}
def columns(%BaseChart{dataset: nil}), do: []
def columns(%BaseChart{dataset: dataset}), do: columns(dataset)
def columns(%Dataset{data: []}), do: []
def columns(%Dataset{data: data, axes: %{magnitude_axis: %{max: max}}}) do
width = 100.0 / Enum.count(data)
margin = width / 4.0
data
|> Enum.with_index()
|> Enum.map(fn {datum, index} ->
offset = index * width
column_height = hd(datum.values) / max * 100
%Column{
label: datum.name,
width: width,
offset: offset,
bar_offset: offset + margin,
bar_width: width / 2.0,
column_height: column_height,
fill_color: datum.fill_color
}
end)
end
end