Skip to content
CAI
Software that uses CAICheck a score

pnezis/tucan

62.1

Adequate · 18 September 2026

8.1k

lines of production code

Elixir

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Tucan is an Elixir plotting library built on top of VegaLite that provides a high-level API for creating interactive visualizations such as bar, line, scatter, and financial charts. It supports advanced features including data grouping, faceting, and geometric overlays, while offering extensive customization through modular components for axes, grids, and legends. The system includes a rich set of pre-configured themes and integrates with Nx tensors for numerical data processing, all supported by comprehensive documentation and test coverage.

Features

Add new chart themes: dark, excel, ggplot2, and more

Users can now apply several new pre-configured chart themes to their visualizations, including dark, excel, ggplot2, five\_thirty\_eight, google\_charts, latimes, power\_bi, quartz, urban\_institute, and vox. These themes are sourced from the Vega themes library and provide distinct styling options for backgrounds, colors, axes, and legends to match various aesthetic preferences or brand guidelines.

themes · high confidence

New modular API for axes, grid, legend, and geometry customization

This release introduces dedicated helper modules to configure plot aesthetics and structure. \Tucan.Axes\ provides functions to set titles, colors, offsets, and label angles for x and y axes. \Tucan.Grid\ allows enabling/disabling and styling grid lines (color, opacity, width, dash style). \Tucan.Legend\ offers control over legend titles, orientation, and visibility. \Tucan.Geometry\ adds the ability to overlay geometric shapes like circles, ellipses, and polygons on plots. Additionally, \Tucan.Layers\ simplifies combining multiple plot specifications, and \Tucan.Finance\ introduces a \candlestick\ plot for financial data.

lib/tucan · high confidence

New time series plotting guide added

A new tutorial notebook, \time\_series\_plots\_in\_tucan.livemd\, has been added to the documentation. It demonstrates how to create various time-based visualizations using Tucan, including temporal scatter plots, strip plots, boxplots, and faceted views, using the built-in \:weather\ dataset.

notebooks · high confidence

Tucan library initialization and comprehensive documentation

The \lib/tucan.ex\ file has been initialized with the full implementation of the Tucan plotting library, replacing the previous placeholder. This introduces a high-level API for creating interactive plots on top of VegaLite, supporting various chart types (bar, line, scatter, histogram, etc.), composite plots like pairplots, and features such as grouping, faceting, and theme customization. The module now includes extensive documentation detailing basic usage, Nx tensor support, data type inference for temporal columns, and customization utilities.

lib · high confidence

Behavioural changes

3 commits (0 fixes) modifying assets

A change to existing behaviour in assets — 3 commits, 3 files.

assets · medium confidence · unverified

Automated theme loading and documentation generation

The library now automatically discovers and loads theme definitions from .exs files in the themes directory, validating that each theme contains required keys (:name and :theme) and rejecting invalid configurations with warnings. Additionally, it generates documentation for each theme by evaluating a VegaLite example with the theme applied, providing users with immediate visual previews of how each theme affects chart rendering.

lib/tucan/themes · high confidence

Test coverage

Added comprehensive test coverage for Tucan modules; Added tests for theme helper functions; Comprehensive test suite for Tucan plotting functions.

Dependencies

Initial release of Tucan plotting library with comprehensive documentation setup

This entry marks the initial release of Tucan (v0.6.0), a plotting library built on top of VegaLite. The project introduces core dependencies including \vega\_lite\, \nx\ (optional), and \jason\, alongside dev tools like \ex\_doc\ and \fancy\_fences\. It establishes a structured documentation system that groups modules into categories such as Plots, Layout, and Styling, and integrates live Vega-Lite plot rendering in the generated HTML docs via CDN scripts.

(dependencies) · high confidence

Housekeeping

Add project linting and documentation tooling configuration

The project now includes configuration files for Credo (\.credo.exs\) and Doctor (\.doctor.exs\) to enforce code quality and documentation standards, alongside a Makefile with targets for linting and spell-checking. A custom CSpell dictionary (\tucan.txt\) and configuration (\cspell.json\) have been added to recognize domain-specific terms, and the formatter has been updated to include the \themes\ directory in its inputs.

(repo-wide) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 62.

Lenses

  • Code Health 98
  • Architecture 100
  • Maturity 34
  • Readiness 77
  • Security 96

Changes since last survey

  • 300 commits — 285 feature/other, 15 fixes

By area

  • (root) — 137 commits
  • lib/tucan — 79 commits
  • lib/tucan.ex — 56 commits
  • .github/workflows — 11 commits
  • notebooks/time_series_plots_in_tucan.livemd — 5 commits
  • test/tucan_test.exs — 4 commits
  • test/tucan — 3 commits
  • .github/dependabot.yml — 2 commits
  • assets/mnist_sample.bin — 1 commit
  • assets/soccer-field.jpeg — 1 commit
  • themes/excel.exs — 1 commit

Notable commits

  • fix: Fix CHANGELOG headers
  • fix: Fix Tucan.Data.column_types/1 when data is empty (#42)
  • fix: Fix elixir 1.19 typing violations
  • fix: Fix syntax error in README example
  • fix: enable dialyzer warnings & spec fixes
  • fix: fix README example
  • fix: fix boxplot docs
  • fix: fix docs
  • fix: fix facet_by spec
  • fix: fix function arity in docs
  • fix: fix hruler & vruler docs
  • fix: fix punchcard plot in docs
  • fix: fix set_height docs
  • fix: fix time series guide
  • fix: ignore color_by in fixed point lines
  • change: Add Axes.set_color/2
  • change: Add Grid.set_color/2
  • change: Add Tucan.Axes.set_label_angle/3
  • change: Add Tucan.Axes.set_labels_enabled/3 helper
  • change: Add Tucan.Axes.set_title_color/3
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

pnezis/tucan was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 7033fb70c2d0e7617e68b525e5c02ce2e937fcf7 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.