What is a monitoring Panel?

A monitoring Panel is an individual plot or counter on the Monitoring Dashboard. 

  • You can add multiple Panels to the Dashboard and customize their type and values shown.
  • When adding a Panel, you select a Metric, and Evidently pulls the corresponding value(s) from all Reports in the Project to plot them.

For example, if you log multiple Data Drift Reports (where each includes theDriftedColumnsCount for the corresponding batch), you can plot how this Metric value changes over time.

The Panel time resolution depends on logged Report frequency. For instance, if you log Reports daily, you’ll see values at daily granularity.

  • You can use Tags to filter data from specific Reports. For example, you can plot the accuracy of Model A and Model B on separate Panels. To achieve this, you must first add relevant Tags to the Report, and then filter by these Tags when creating a Panel.
  • You can add multiple Tabs to logically group Panels. (Evidently Cloud and Enterprise).

Dashboard Management

You can add Panels in the user interface or using Python API.

Via UI

No-code Dashboards are available in the Evidently Cloud and Enterprise.

By default, new Panels appear on a single Dashboard. You can add multiple Tabs to organize them.

To add Tabs.

  • Enter the “Edit” mode on the Dashboard (top right corner)
  • Click the plus sign with “add Tab” on the left.
  • To create a custom Tab, select “empty” and enter a name.

To add Panels.

  • Enter the “Edit” mode on the Dashboard (top right corner)
  • Click on the “Add Panel” sign next to it.
  • Follow the prompts to configure the panel.
  • Preview and publish.

To delete/edit a Panel, enter Edit mode and hover over a specific Panel to choose an action.

Via Python API

Dashboards as code are available in Evidently OSS, Cloud, Enterprise.

You must first connect to Evidently Cloud, create a Project.

Adding Tabs. To add a new Tab:

project.dashboard.add_tab("Another Tab")

Note: 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.

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",
)

Plots

These Panels display values as bar or line plots.

panel_line_plot_example

Line chart

Shows values over time from multiple Reports.

panel_dist_stacked_2-min

Bar chart (stacked)

Shows values over time from multiple Reports, or distributions of values.Stacked bar chart shows counts in a single bar.

panel_dist_group_2-min

Bar chart (grouped)

Shows values over time from multiple Reports, or distributions of values. Grouped bar chart shows counts in separate 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="denials",
                        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.