Skip to main content
When the agent answers a question with data, it can render the result set as a chart or as a table. Both are produced by the display_chart tool from a previous execute_sql result, and both can be adjusted afterwards without re-running the query.

Chart types

The agent picks a chart type from the result set, and you can change it later from the edit dialog. Stacked bar and stacked area charts also have a normalized variant that plots each series as a share of its category total on a 0-100% axis. See Normalize to 100 percent below. For large numeric values, nao shortens Y-axis labels to values such as 100K, 1.5M, or 2B to keep charts readable.

Pie and donut charts

Pie and donut charts take exactly one series. Categories are shown in a legend rather than as labels drawn on the slices, and slices are separated by a small gap so adjacent categories stay distinguishable. When a result set has more than 10 categories, nao keeps the 10 largest slices by value and sums the remainder into a single Other slice. If the data already contains a category called “Other”, the remainder is merged into it rather than creating a duplicate.

Editing a chart

Click the pencil icon next to a chart’s download button to open the edit dialog. Changes apply to the existing chart config, so the query is not re-run. The dialog lets you set:
  • Title
  • Chart type
  • X-axis type: Auto, Category, Date, or Number
  • X-axis column
  • Series: for each series, the data column, an optional label, and a color. Use Add series to plot another column, or the bin icon to remove one (at least one series is required).
  • Y-axis range
  • Show data labels
Click Save to persist the changes. Any cached chart image used for Slack, Teams, and WhatsApp previews is regenerated on the next request. Chart editing is available on charts in a chat thread and on chart blocks inside a story. It is restricted to the chat or story owner, and hidden while the agent is running, on archived stories, in shared or read-only views, and when viewing older story versions.

Normalize to 100 percent

When the selected chart type is a stacked bar or stacked area chart, the dialog shows a Normalize to 100% toggle. Turning it on switches the chart to its 100% stacked variant: each series is drawn as a share of the category total and the axis runs from 0 to 100%. Tooltips show percentages instead of absolute values. Use it when the composition matters more than the absolute totals. Turning the toggle off returns the chart to absolute stacking.

Y-axis range

By default the Y axis adapts to the values in the result set. Line and scatter charts auto-scale to a readable range rather than forcing a zero baseline. To pin the scale, enter a Min, a Max, or both in the Y-axis range fields. Leaving a field on its Auto placeholder keeps that bound automatic. The minimum must be lower than the maximum, otherwise the dialog rejects the change. The Y-axis range fields are not shown for pie, KPI card, and radar charts, which have no Y axis.

Data labels

The Show data labels toggle prints the numeric value of each data point directly on the chart, instead of requiring a hover. You can also ask the agent for it in plain English (for example: “show the values on the chart”). On line and area charts, labels are limited to the most significant points so a dense series stays legible.

Viewing the SQL and data behind a chart

Every chart is backed by a SQL query and its result set. Click the View SQL query and data action (the <> icon) on the chart toolbar to open a side panel with the execute_sql query on top and the result rows below, so you can verify exactly how a chart was built.

Tables

Ask for a table instead of a chart and the agent renders the result set with display_chart using chart_type: "table". Tables include:
  • Right-aligned numeric columns with tabular figures, so digits line up.

Conditional formatting

Numeric, boolean, and text columns can be colored by rule. Open the Edit table formatting dialog from the table toolbar and pick a rule per column - columns default to None. Available rules depend on the column type:

Numeric

Color scale shades each cell on a gradient between the column minimum and maximum. Threshold colors cells matching a comparison (, >, , <, =) against a value.

Boolean

Boolean sets a background color for true cells, false cells, or both. Leave a color unset to skip that case.

Text

String colors cells that match an operator: equals for an exact match, in list for one of several values, or contains for a case-insensitive substring.
For color scales, nao derives the gradient from a single color by default, running from a light tint at the low end to the full color at the high end. The bounds default to the column minimum and maximum. Asking the agent to format a table You do not have to open the dialog. Ask for the formatting in plain English and the agent applies the rules itself:
“Show revenue by region as a table and highlight anything under 10k in red.” “Put a color scale on the conversion rate column.”
The agent is instructed to use real conditional formatting for these requests rather than faking it with emoji or by adding an extra status column to the data.

Date format

Dates rendered by nao follow a project-level setting rather than each viewer’s locale, so everyone on the project reads the same format. Set it in Settings -> Project on the Date format card. This is an admin setting. European is the default. Choosing Custom lets you compose a pattern from the supported tokens: YYYY, YY, MMMM, MMM, MM, M, DD, D, dddd, and ddd. The card previews the result on a sample date as you type. The setting applies to chart axes, tooltips, legends, and KPI cards, to SQL result tables, and to the charts and tables inside stories and their PDF and HTML exports.