TermUI.Widgets.Sparkline (TermUI v0.2.0)

View Source

Sparkline widget for compact inline trend visualization.

Uses vertical bar characters (▁▂▃▄▅▆▇█) to display values in minimal space. Perfect for inline data display within text.

Usage

Sparkline.render(
  values: [1, 3, 5, 2, 8, 4, 6],
  min: 0,
  max: 10
)

Bar Characters

The sparkline uses 8 levels of vertical bar characters: ▁ (1/8), ▂ (2/8), ▃ (3/8), ▄ (4/8), ▅ (5/8), ▆ (6/8), ▇ (7/8), █ (8/8)

Summary

Functions

Returns the list of bar characters used by sparklines.

Renders a sparkline from values.

Renders a labeled sparkline with min/max indicators.

Creates a sparkline string from values (returns string, not render node).

Converts a single value to its sparkline bar character.

Functions

bar_characters()

@spec bar_characters() :: [String.t()]

Returns the list of bar characters used by sparklines.

render(opts)

@spec render(keyword()) :: TermUI.Component.RenderNode.t()

Renders a sparkline from values.

Options

  • :values - List of numeric values (required)
  • :min - Minimum value for scaling (default: auto)
  • :max - Maximum value for scaling (default: auto)
  • :style - Style for the sparkline
  • :color_ranges - List of {threshold, color} for value-based coloring

render_labeled(opts)

@spec render_labeled(keyword()) :: TermUI.Component.RenderNode.t()

Renders a labeled sparkline with min/max indicators.

Options

  • :values - List of numeric values (required)
  • :label - Label for the sparkline
  • :show_range - Show min/max values (default: true)

to_sparkline(values, opts \\ [])

@spec to_sparkline(
  [number()],
  keyword()
) :: String.t()

Creates a sparkline string from values (returns string, not render node).

Options

  • :min - Minimum value (default: auto)
  • :max - Maximum value (default: auto)

value_to_bar(value, min, max)

@spec value_to_bar(number(), number(), number()) :: String.t()

Converts a single value to its sparkline bar character.

Examples

iex> Sparkline.value_to_bar(5, 0, 10)
"▄"

iex> Sparkline.value_to_bar(10, 0, 10)
"█"

iex> Sparkline.value_to_bar(0, 0, 10)
"▁"