Add dashboard panels (API)
How to design your Dashboard with custom Panels.
You can add Panels in the user interface or using Python API. This pages describes the Python API. Check how to add panels in the UI.
Dashboard Management
Dashboards as code are available in Evidently OSS, Cloud, Enterprise.
You must first connect to Evidently Cloud and create a Project.
Adding Tabs. To add a new Tab:
You can also create a new Tab while adding a Panel as shown below. If the destination Tab doesn’t exist, it will be created. If it does, the Panel will be added below existing ones in that Tab.
Deleting Tabs. To delete a Tab:
Deleting Panels. To delete a specific Panel:
(First list the Panel name, then the Tab name).
[DANGER]. Delete Dashboard. To delete all Tabs and Panels on the Dashboard:
Note: This does not delete the underlying Reports or dataset; it only clears the Panels.
Adding Panels
Imports:
You can add multiple Panels at once: they will appear in the listed order.
Text
Text-only panels are perfect for titles.
Add a text panel. Add a new text panel to the specified Tab.
Counters
Counter panels show a value with optional supporting text.

Text counter
Shows the specified value(s) and optional text.

Pie chart
Shows the specified value(s) in a pie chart.
Add Counters. To add panels for the RowCount
metric with different aggregations:
Add pie charts. You can use the same aggregation params (sum
, last
, avg
).
Plots
These Panels display values as bar or line plots.

Line chart
Shows the selected values over time. You can add multiple series to the same chart as multiple lines.

Bar chart (stacked)
Shows selected values or distributions over time (if stored in each Report). Stacked in a single bar.

Bar chart (grouped)
Shows selected values or distributions over time (if stored in each Report). Multiple bars.
Add Plots. To add time series panels for the RowCount
metric.
Multiple values. A single Panel can show multiple values. For example, this will add multiple lines on a Line chart:
Dashboard Panel options
A summary of all parameters:
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
title | str | ❌ | None | Title of the panel. |
description | str | ❌ | None | Optional panel description shown as a subtitle. |
size | str | ❌ | "full" | Panel size: "full" (100% width) or "half" (50%). |
values | list | ✅ | — | List of PanelMetric objects to display. |
tab | str | ❌ | None | Dashboard tab name. If not set, defaults to the first tab or creates a new “General” tab. |
create_if_not_exists | bool | ❌ | True | If True , creates the tab if it doesn’t exist. Throws exception if False . |
plot_params | dict | ❌ | {} | Panel visualization settings like "plot_type" : "text" , "line" , "counter" . |
Configuring Panel values
Metric
To define which value the Panel displays, you must reference the name of the corresponding Evidently Metric. This metric must be present in the Reports logged to your Project. If the metric isn’t present, the Panel will appear empty.
Dataset-level Metrics: pass the Metric name directly to PanelMetric
, e.g., "RowCount"
.
Example:
Presets (like TextEvals
, ClassificationPreset
, DataDriftPreset
) contain multiple sub-metrics. When logging Reports using a Preset, you must reference the specific metric inside it, such as Accuracy
, Recall
, etc.
Need help finding metric names? See the All Metrics Reference Table for a full list of Metrics.
Metric labels
Some Metrics require additional context. This applies when the metrics:
- Operate at the column level
- Return multiple values (metric results)
- Have user-defined custom parameters
In these cases, use metric_labels
to specify what exactly you want to plot.
Example. To plot the share of categories inside “Denials” column:
Column / Descriptor. When you compute a text descriptor or any metric that operates at the column level, use the column
label to specify which column or descriptor it refers to.
For example, in a TextEvals
Report, each text descriptor (e.g., text length, LLM judged “denials”, etc.) is treated as a column. These descriptors are summarized with various statistics. To plot one of these values, you need to:
- Choose a summary Metric like
UniqueValueCount
,MissingValueCount
,MaxValue
, etc. - Use the
column
label to point the specific descriptor.
Example. To plot the min value from the “Text Length” column:
Value type. Most Evidently Metrics return a single value
. For example, Accuracy
returns the corresponding accuracy value
. So listing just the Metric
name is enough to specify what exactly you want to plot.
However, some metrics produce more than one metric result, like:
CategoryCount
: returns bothshare
andcount
MAE
: returns bothmean
andstd
In this case, you must point to which value you want using the value_type
key, e.g. {"value_type": "share"}
How to verify the metric result for a specific metric?
- Look up the expected outputs in the All Metrics Table.
- Or, generate a Report with the target
metric
and inspect its structure viareport.dict()
orreport.json()
.
Metrics with extra parameters. If a metric has configurable options (like drift method), you must also include those in metric_labels
.
PanelMetric
options
A summary of all parameters:
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
legend | str | ❌ | None | Legend name in the panel. If None , one is auto-generated. |
tags | list | ❌ | [] | Optional tags to select values only from a subset of Reports in the Project. |
metadata | dict | ❌ | {} | Optional metadata to select values only from a subset of Reports in the Project. |
metric | str | ✅ | — | Metric name (e.g., "RowCount" ). |
metric_labels | dict | ❌ | {} | Parameters like column names (applies to descriptors too) or value_type . |