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:

project.dashboard.add_tab("Another 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:

project.dashboard.delete_tab("Another Tab")

Deleting Panels. To delete a specific Panel:

project.dashboard.delete_panel("Dashboard title", "My new tab")

(First list the Panel name, then the Tab name).

[DANGER]. Delete Dashboard. To delete all Tabs and Panels on the Dashboard:

project.dashboard.clear_dashboard()

Note: This does not delete the underlying Reports or dataset; it only clears the Panels.

Adding Panels

Imports:

from evidently.sdk.models import PanelMetric
from evidently.sdk.panels import DashboardPanelPlot

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.

project.dashboard.add_panel(
    DashboardPanelPlot(
        title="Dashboard title",
        size="full", 
        values=[], #leave empty
        plot_params={"plot_type": "text"},
    ),
    tab="My new tab", #will create a Tab if there is no Tab with this name
)

Counters

Counter panels show a value with optional supporting text.

panel_counter_example-min

Text counter

Shows the specified value(s) and optional text.

panel_pie_chart

Pie chart

Shows the specified value(s) in a pie chart.

Add Counters. To add panels for the RowCount metric with different aggregations:

# Sum
project.dashboard.add_panel(
    DashboardPanelPlot(
        title="Row count",
        subtitle="Total number of evaluations over time.",
        size="half",
        values=[PanelMetric(legend="Row count", metric="RowCount")],
        plot_params={"plot_type": "counter", "aggregation": "sum"},
    ),
    tab="My tab",
)

# Average
project.dashboard.add_panel(
    DashboardPanelPlot(
        title="Row count",
        subtitle="Average number of evaluations per Report.",
        size="half",
        values=[PanelMetric(legend="Row count", metric="RowCount")],
        plot_params={"plot_type": "counter", "aggregation": "avg"},
    ),
    tab="My tab",
)

# Last
project.dashboard.add_panel(
    DashboardPanelPlot(
        title="Row count",
        subtitle="Latest number of evaluations.",
        size="half",
        values=[PanelMetric(legend="Row count", metric="RowCount")],
        plot_params={"plot_type": "counter", "aggregation": "last"},
    ),
    tab="My tab",
)

Add pie charts. You can use the same aggregation params (sum, last, avg).

project.dashboard.add_panel(
    DashboardPanelPlot(
        title="Row count",
        subtitle="Total number of evaluations over time.",
        size="half",
        values=[PanelMetric(legend="Row count", metric="RowCount")],
        plot_params={"plot_type": "pie", "aggregation": "sum"},
    ),
    tab="My tab",
)

Plots

These Panels display values as bar or line plots.

panel_line_chart

Line chart

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

panel_dist_stacked_2-min

Bar chart (stacked)

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

panel_dist_group_2-min

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.

# line chart
project.dashboard.add_panel(
             DashboardPanelPlot(
                title="Row count",
                subtitle = "Number of evaluations over time.",
                size="half",
                values=[
                    PanelMetric(
                        legend="Row count",
                        metric="RowCount",
                    ),
                ],
                plot_params={"plot_type": "line"},
            ),
            tab="My tab",
        )
        
# bar chart
project.dashboard.add_panel(
             DashboardPanelPlot(
                title="Row count",
                subtitle = "Number of evaluations over time.",
                size="half",
                values=[
                    PanelMetric(
                        legend="Row count",
                        metric="RowCount",
                    ),
                ],
                plot_params={"plot_type": "bar", "is_stacked": False}, #default False, set as True to get stacked bars
            ),
            tab="My tab",
        )

Multiple values. A single Panel can show multiple values. For example, this will add multiple lines on a Line chart:

project.dashboard.add_panel(
    DashboardPanelPlot(
        title="Text Length",
        subtitle="Text length stats (symbols).",
        size="full",
        values=[
            PanelMetric(legend="max", metric="MaxValue", metric_labels={"column": "length"}),
            PanelMetric(legend="mean", metric="MeanValue", metric_labels={"column": "length"}),
            PanelMetric(legend="min", metric="MinValue", metric_labels={"column": "length"}),
        ]
    )
)

Configuring Panel values

To plot values in a Panel, reference the name of an Evidently Metric included in the Reports logged to your Project. If the metric isn’t present, the Panel will be empty.

  • Dataset-level Metrics: pass the Metric name directly to PanelMetric, e.g., "RowCount".
  • Presets (like TextEvals). Even when using a Preset, you must still reference the exact Metric inside it — such as UniqueValueCount or QuantileValue. (See the All Metrics Reference Table for a full list of Metrics).
  • Column-level Metrics. If the Metric operates on a specific column, use metric_labels to specify it. This also applies to text descriptors logged using TextEvals.

Example:

# bar chart with stacked values
project.dashboard.add_panel(
             DashboardPanelPlot(
                title="Denials",
                subtitle = "Number of denials.",
                size="half",
                values=[
                    PanelMetric(
                        legend="""{{label}}""",
                        metric="UniqueValueCount",
                        metric_labels={"column": "denials", #column name
                                       "value_type": "share"} 
                    ),
                ],
                plot_params={"plot_type": "bar", "is_stacked": True},
            ),
            tab="My tab",
        )

Use metric_labels when the metric has extra parameters and you want to narrow the values shown on the Panel. This includes:

  • Column-level metrics. As shown above.
  • Metrics with multiple value types. Some metrics return both share and count (e.g., CategoryCount). Use {"value_type": "share"} to specify.
  • Metrics with extra configuration. If a metric has configurable options (like drift method), include those in metric_labels to differentiate.

Otherwise, all values for that metric will be plotted unless you also filter Reports by Tags.

All parameters

Dashboard Panel options

ParameterTypeRequiredDefaultDescription
titlestrNoneTitle of the panel.
descriptionstrNoneOptional panel description shown as a subtitle.
sizestr"full"Panel size: "full" (100% width) or "half" (50%).
valueslistList of PanelMetric objects to display.
tabstrNoneDashboard tab name. If not set, defaults to the first tab or creates a new “General” tab.
create_if_not_existsboolTrueIf True, creates the tab if it doesn’t exist. Throws exception if False.
plot_paramsdict{}Panel visualization settings like "plot_type": "text", "line", "counter".

PanelMetric options

ParameterTypeRequiredDefaultDescription
legendstrNoneLegend name in the panel. If None, one is auto-generated.
tagslist[]Optional tags to select values only from a subset of Reports in the Project.
metadatadict{}Optional metadata to select values only from a subset of Reports in the Project.
metricstrMetric name (e.g., "RowCount" or "evidently:metric_v2:MinValue").
metric_labelsdict{}Parameters like column names {"column": "Col_name"} or value types.