> For the complete documentation index, see [llms.txt](https://docs.marpledata.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.marpledata.com/docs/marple-insight/user-manuals/metrics.md).

# Metrics

{% hint style="success" %}
Metric dashboards are in active development. Reach out to us with any suggestions, questions or feedback at <support@marpledata.com>
{% endhint %}

Metrics dashboards let you compare all your datasets in a single view. Each plot calculates a metric, such as a maximum, an average or a metadata value, for every dataset or for every lap, and shows the results side by side. For example, you can make a dashboard to compare drivers across a race weekend or to track the progress of a test campaign:

<figure><img src="https://3590686807-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwEBNWlmdcxXBXd7oyqyR%2Fuploads%2FjFSe5fMZeckvrrYbfT65%2Foverview-dashboard.png?alt=media&amp;token=2b48f584-54bb-49c3-add1-2c6c75dc8ed3" alt=""><figcaption></figcaption></figure>

Open **Metrics** in the left navigation to see all metrics dashboards in your workspace. Click **New metrics dashboard** to create one.

## Plot types

<figure><img src="https://3590686807-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwEBNWlmdcxXBXd7oyqyR%2Fuploads%2FIJW5exNvbjlFBisf2eFH%2Fplot-types.png?alt=media&amp;token=0b024fe8-85bd-4101-a419-be4f887717e8" alt=""><figcaption></figcaption></figure>

Currently,  the following plot types are supported:

* **Number plots**: show 1 aggregated value for all datasets\
  Example: fastest speed trap of the weekend \[km/h]
* **Table, Pie and Bar plots**: show one or more aggregated values, grouped on a second value\
  Example: top speed per driver, or the number of laps driven per session
* **Scatter plots**: show two metrics as a single dot for every dataset or lap\
  Example: top speed vs. average throttle for every dataset
* **Trendlines**: follow one metric across datasets or laps, in the order you choose\
  Example: lap time for every lap of the race, one line per driver.

{% hint style="success" %}
Hint: scatter plots can be used to identify outliers. You can click the visualise icon to open a dataset for deeper analysis.
{% endhint %}

<figure><img src="https://3590686807-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwEBNWlmdcxXBXd7oyqyR%2Fuploads%2F2eoscbjLl5ODn4ID91fF%2Fscatter-drill-down.png?alt=media&amp;token=34fea0d4-dc58-4574-bb4f-10032a6e5a1c" alt=""><figcaption><p>By clicking the visualise icon for a dataset, you can drill down into the time series view to explore it in depth.</p></figcaption></figure>

You can create your plots based on

* Raw signal values from your datasets, e.g. `speed`, `temperature`, etc.
* Math channels that are derived from raw signals, e.g. `temperature_fahrenheit`\
  Read more here: [Functions](/docs/marple-insight/user-manuals/functions.md)
* Dataset metadata, e.g. `driver`, `location`, etc.
* Lap metadata, e.g. lap duration or lap index, when the plot is calculated per lap. See Dataset or lap level.

{% hint style="info" %}
Text signals can't be used as a metric yet. Use a numeric signal or a metadata field instead.
{% endhint %}

#### Sorting and grouping in bar and pie plots

* **Sort**: sort the bars or rings on one of the plotted values, or on any metadata field, in ascending or descending order.
* **Group by**: choose a signal, a metadata field or **None**. With **None**, every dataset or lap gets its own bar.
* **Extra group by levels**: split the bars further on more metadata fields. Each level draws its own row of labels under the x-axis.

### Dataset or lap level

Every plot has a **Granularity** setting. It decides what one value in the plot stands for:

* **Dataset**: one value per dataset. This is the default.
* **Lap**: one value per lap of each dataset. A race of 78 laps then gives 78 values per driver instead of 1.

{% hint style="info" %}
The **Lap** option is only available when laps (segments) are set up for your data connection. The option takes the name your workspace uses for segments, so it might read *Stint*, *Run* or *Segment* instead of *Lap*.
{% endhint %}

When a plot is calculated per lap, you can use the lap metadata as well as the dataset metadata:

* **Lap · Duration**: the lap time
* **Lap · Index (in dataset)**: the lap number within the dataset
* **Lap · Fastest (in dataset)**: marks the fastest lap of each dataset
* **Lap · Label**: the name of the lap

Signal metrics are calculated over the lap only. For example, *max of Speed* at lap level gives the top speed of every individual lap.

**Example: fastest qualifying lap per driver**

1. Add a **Bar** plot and open its settings with the gear icon.
2. Set **Granularity** to **Lap**.
3. For the bar, set **Aggregate** to `min`, **Type** to **Metadata** and pick **Lap · Duration**.
4. Under **Group by**, choose **Metadata** and pick the driver field.
5. Under **Filter datasets**, add the session field and select *Qualifying*.
6. Set **Sort** to the bar value, ascending, to put pole position on the left.

<figure><img src="https://3590686807-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwEBNWlmdcxXBXd7oyqyR%2Fuploads%2F5393r3F7CSGLLvMJL5CR%2Flap-granularity-settings.png?alt=media&amp;token=7f2ac1eb-4f46-4e3f-b532-8680d71b644c" alt="Bar plot settings with Granularity set to Lap and the metric set to the minimum lap duration"><figcaption><p>Granularity set to Lap: the bar shows the fastest lap of each driver in qualifying.</p></figcaption></figure>

{% hint style="success" %}
Hint: lap-level plots calculate many more values than dataset-level plots. Metrics on lap metadata, such as lap duration, are instant. Signal metrics need data for every lap, so start them with **Calculate all** in the sidebar and let them run in the background.
{% endhint %}

### Trendlines

A trendline follows one metric across your datasets or laps. Use it to see how a value evolves: lap times during a race, temperatures over a test campaign, or top speed from session to session.

A trendline has the following settings:

* **Granularity**: one point per dataset or one point per lap.
* **Metric**: a signal aggregate or a metadata field, e.g. *max of Speed* or *Lap · Duration*.
* **X-axis sort by**: the metadata field that sets the order of the points, e.g. *Start Time* or *Lap · Index (in dataset)*. Points are spaced evenly on the x-axis.
* **X-axis grouping**: one or more metadata fields that group consecutive points with the same value. Each level adds a row of labels under the x-axis. Drag the levels to change their order; the first level sits closest to the plot.
* **Split data by**: a metadata field that splits the points into separate lines, one color per value. For example, split by driver to get one line per driver.
* **Y-axis**: start the axis at zero, fit it to the data automatically, or set the limits manually. Manual limits are useful to hide outliers such as in-laps or out-laps.

**Example: race pace per driver**

1. Add a **Trendline** plot and open its settings.
2. Set **Granularity** to **Lap**.
3. Set the metric to **Metadata** → **Lap · Duration**. The value is shown as a lap time automatically (see Formatting values).
4. Set **X-axis sort by** to **Lap · Index (in dataset)**.
5. Set **Split data by** to the driver field.
6. Under **Filter datasets**, select the race session and the drivers you want to compare.

<figure><img src="https://3590686807-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwEBNWlmdcxXBXd7oyqyR%2Fuploads%2FpHkuSZZa8re6brhpx41S%2Flap-trendline.png?alt=media&amp;token=dea0fb6f-cbcb-4c62-be8f-c1ae5c7e06be" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Hint: hover over a point to see every dataset or lap at that position. Click the chart icon next to a dataset to open it in Analysis for a deeper look.
{% endhint %}

### Formatting values

Every numeric metric has a **Format** setting:

* **Number**: a plain number with a set number of decimal places.
* **Duration**: a value in seconds, shown as a time span. The default pattern is `HH:mm:ss.SSS`, or `m:ss.SSS` in motorsport workspaces, e.g. `1:14.846`.
* **Date**: a Unix timestamp in seconds, shown as a date in your local time. The default pattern is `DD/MM/YYYY HH:mm:ss`.

For **Duration** and **Date**, the **Pattern** field sets how the value is written. Patterns follow the [moment.js format tokens](https://momentjs.com/docs/#/displaying/format/). Some examples:

| Pattern               | Example             |
| --------------------- | ------------------- |
| `DD/MM/YYYY HH:mm:ss` | 23/05/2025 13:15:02 |
| `ddd D MMM, HH:mm`    | Fri 23 May, 13:15   |
| `YYYY-MM-DD`          | 2025-05-23          |
| `MMM YYYY`            | May 2025            |
| `m:ss.SSS`            | 1:14.846            |

Metadata like *Start Time*, *End Time*, *Duration* and *Lap · Duration* get the right format automatically when you select them. For other metadata, switch the **Data type** to **Number** and pick the format yourself. The **Multiplier** is applied before formatting, so you can convert milliseconds to seconds with a multiplier of `0.001`.

#### Grouping on formatted values

When you group a table, bar or pie plot on a date or duration, datasets are grouped on the formatted value. The pattern therefore decides how coarse the groups are:

* `YYYY-MM-DD` gives one group per day.
* `YYYY-[W]WW` gives one group per week.
* `MMM YYYY` gives one group per month.

<figure><img src="https://3590686807-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwEBNWlmdcxXBXd7oyqyR%2Fuploads%2FNU4hxyMfR5PDJyNAEVBm%2Fdate-format-settings.png?alt=media&amp;token=16b15729-bdd9-46b6-a1b5-7cfa4d4ad172" alt=""><figcaption></figcaption></figure>

### Filtering

Metrics dashboards allow you to filter the datasets that you want to see. This can be done on three levels:

1. **Saved filters**: use this to make a primary selection of what datasets should appear on the dashboard.
2. **Ad-hoc filters**: useful to quickly dive into a subset of the data. They are reset whenever you open the dashboard from scratch.
3. **Plot filters**: for applying extra filtering on the plot level. Also saved as part of the dashboard definition.

<figure><img src="https://3590686807-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwEBNWlmdcxXBXd7oyqyR%2Fuploads%2FRNNkZ3zdkKafpsYrf6i6%2Ffilters.png?alt=media&amp;token=8270722d-368a-4524-b29d-69c36095b6b9" alt=""><figcaption><p>The visible datasets in an overview dashboard can be filtered on three levels.</p></figcaption></figure>

### Reference dataset

In edit mode, the **Reference dataset** in the sidebar decides which signals you can pick in the plot settings. Choose a dataset that contains all the signals you need. The reference dataset doesn't change which datasets are shown on the dashboard.

### Calculating values

Metric values are calculated in the background and cached, so the dashboard opens quickly the next time. The sidebar shows how many values are calculated.

* **Calculate all**: calculate every value in the current tab, also for plots you haven't scrolled to yet.
* **Clear failed**: clear values that failed to calculate, so they are calculated again.
* **Clear all**: clear all cached values in the current tab, for example after you changed a math channel.

### Tabs

Divide your plots across multiple tabs for a better overview.

In edit mode, you can add, delete, rename, and duplicate tabs.

<figure><img src="https://3590686807-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwEBNWlmdcxXBXd7oyqyR%2Fuploads%2Fqmmeq2iK5OENlC85oK2L%2Fimage.png?alt=media&amp;token=4d9557fc-5492-40d7-a90b-b4019c209d71" alt="Overview dashboard with tabs"><figcaption></figcaption></figure>

### Discover Overview Dashboard in 1 minute

{% embed url="<https://youtu.be/J6yCoxYZ-Sk>" %}

Want to discover more Overview Dashboard features in 1 minute? Check out other [1 Minute Marple videos](/docs/other-resources/1-minute-marple-videos.md)
