🐹 gerbil

Package VersionHex Docs

This packages makes it easy to build pretty svg charts you can include in a Lustre app, or render to serve as static documents! Here's an example of a chart built with gerbil:

.doc-chart { padding-block-start: var(--gap); padding-block-end: var(--small-gap); padding-inline-end: var(--gap); padding-inline-start: var(--small-gap); } body { --plot-colour:#4078f2; } body.theme-dark { --plot-colour: var(--pink); --vertical-tick-colour: var(--bg-tint-1); --horizontal-tick-colour: var(--bg-tint-1); }
GleamElixirErlang050001000015000200002500030000

This is the code you need to build it:

import gerbil/axis
import gerbil/plot
import gleam/option.{Some}
import lustre/element
pub fn chart() -> String {
let programming_language =
axis.categorical()
|> axis.show_labels(fn(language) { language })
let github_stars =
axis.int()
|> axis.min(0)
chart.new(x: programming_language, y: github_stars)
|> chart.add(
chart.vertical_bars([], [
chart.bar("Gleam", 0, 21_900, []),
chart.bar("Elixir", 0, 26_600, []),
chart.bar("Erlang", 0, 12_300, []),
]),
)
|> chart.to_svg(width: 2, height: 1)
|> element.to_string
}