# Figures, charts and tables

> Charts, the ten figure kinds, smart tables and Plain table, and how Canto checks a figure's numbers.

Applies to Canto 1.0 beta 3 · Updated Oct 10, 2026 · https://lonelyduck.io/docs/canto/figures

Taken from the app's source for Canto 1.0 beta 3: `src/shared/visuals/registry.ts`, `src/renderer/lib/studio/chartSpec.ts`.

Canto draws numbers and structure as pictures: charts, ten kinds of figure, and tables that read their own numbers. A model can write them into an answer or a note, and you can add them yourself from the "/" menu. They're drawn on your Mac, look the same in the chat and in the note saved from it, and go with the note when you export or publish it.

## Charts

**/ › Chart** inserts a starter chart. Point at it for its toolbar:

* **Bar**, **line**, **pie** or **scatter** switches how it's drawn.
* **Edit data** opens the chart's editor: a **Caption**, **Bars across** for a bar chart, a row per point with its label and value, and **Add row**.
* **Bind to:** takes the numbers from **Table 1**, **Table 2** and so on in the same note, or from a research note's **Evidence ledger**. The chart then says where its data comes from.

Charts a model writes draw even when the model wrote them loosely: with comments, trailing commas, curly quotes, values such as "60%" or "$1,200", or as donut, area or horizontal bar charts. A chart that still can't be drawn shows its numbers as a small table instead of raw code. While a model is still writing one, the chat says **Drawing the chart…**.

A caption sits under every chart and figure in the same quiet type, numbered the same way in the chat, the note, a PDF and a published page.

## The ten figure kinds

Each kind is a row in the "/" menu (under **Blocks**). Choosing one inserts an example you can edit.

| Kind               | What it shows                                                                                                                  | Fence name |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ---------- |
| Key numbers        | A row of tiles, each with a number, a label and its source                                                                     | `stats`    |
| Timeline           | Dated events on a rail, oldest first, with milestones. Dates can be written as "2021-05", "May 2021", "Q2 2021" or "the 1990s" | `timeline` |
| Scorecard          | Options across, criteria down: 1–5 ratings as small meters, ✓ and ✗ as marks, and the recommended option tinted                | `compare`  |
| Steps              | Numbered cards, each with a title and the detail under it                                                                      | `steps`    |
| For and against    | Two balanced columns                                                                                                           | `proscons` |
| Layers             | An architecture as layers, grouped into zones                                                                                  | `layers`   |
| Positioning map    | Options on two axes with named quadrants                                                                                       | `map`      |
| Flow               | How a total splits between stages, like a budget across teams                                                                  | `flow`     |
| What-if calculator | Sliders and choices; Canto works out the result on your Mac                                                                    | `calc`     |
| Explained formula  | A formula with what each symbol means, each symbol in its own colour                                                           | `formula`  |

In Ask's narrow panel each kind takes a narrow form: key numbers two across, a timeline without its descriptions, steps in one column.

**The what-if calculator** is arithmetic Canto does itself. Nothing in the answer runs as code, and moving a slider doesn't change the note. A published page or an export shows the starting values.

### Writing a figure in Markdown

A figure is a fenced block whose language is its kind, with one row per line and cells split by `|`. An optional first line `title: …` is the caption. For example:

````text
```stats
title: The plan at a glance
1M | Context window | all four models [1]
5–8 | Tickets at once | in parallel
```
````

Markdown you import with figures in it becomes figures right away, and exporting a note to Markdown writes them back the same way.

## Editing a figure

Point at a figure and press its edit key, or select it and press `↩`. A panel opens under it with:

* **Kind**, to switch to another kind with the same rows,
* the rows as text, with a line under them for anything Canto couldn't read,
* a live preview,
* **Show as code**, which turns the figure back into the code block it came from.

**Done** (`⌘↩`) applies everything as one undo step; **Cancel** (`Esc`) leaves the figure as it was. If the rows don't make that kind of figure yet, the note shows them as a table until they do.

Citations in a figure, like `[1]` at the end of a row, are numbered with the note's References and jump to them.

## How Canto checks the numbers

The model picks the shape; Canto checks the numbers. When a figure appears in an answer, Canto looks for each of its numbers in the answer and in the sources it cites. A line under the figure says what it found:

| Line                       | Means                                                                                         |
| -------------------------- | --------------------------------------------------------------------------------------------- |
| No line                    | Every number was found in the answer or its sources, or there was nothing to check it against |
| **Figures from the model** | At least one number appears in neither: the model may have made it up                         |
| **The model's judgement**  | A scorecard's ratings or a map's positions: an opinion, not a measurement                     |
| **Shown as a table**       | Canto couldn't draw the rows as that kind, so it shows them as a table                        |

A figure you edit by hand is yours: Canto stops checking it, and the line goes.

### Figures in research notes

After a research note is written, Canto asks the model, section by section (up to five sections), whether a key-numbers row, a timeline, a scorecard or another figure would help. It keeps a figure only when every number in it appears in that section or its sources. The save says "Adding figures · 2 of 5" while it works.

Turn this off in **Settings › Assistant › Research › Add figures to research notes**. In Small Mac mode it stays off for models on your Mac. See [Research and research notes](https://lonelyduck.io/docs/canto/research).

## Smart tables

Every table reads its own numbers, in the chat, in notes (older ones too) and on published pages:

* A bar behind each value, scaled to its column.
* The best value in a column tinted: the lowest price, cost, latency or size; the highest score, accuracy or speed. A column that could read either way, such as "8K Context (GB)", isn't tinted.
* ✓, ✗, yes, no and partial drawn as marks.
* The first column names the rows and is left as written.

None of this changes the note: it's drawn over the table, and the text stays exactly as you typed it. To turn it off for one table, choose **Plain table** in the table's row or column menu.

## Everywhere a note goes

* **Export.** HTML and PDF draw figures, charts and smart tables. Markdown keeps charts as ` ```chart ` blocks and figures as their fences. See [Import and export](https://lonelyduck.io/docs/canto/import-export).
* **Publishing.** Figures and charts publish as drawings, in your palette, in light and dark. See [Publishing a page](https://lonelyduck.io/docs/canto/publishing).
* **Search.** Search, search by meaning and Ask's reading of a note include a figure's rows.
* **Copying.** A figure copied from a chat answer pastes into a note as a figure.
