> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chronosphere.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Visualize large statistic numbers with stat charts

<Note>
  [Classic dashboards](/observe/dashboards/classic-dashboards) have their own panels
  and methods of configuring them. For details about panels in classic dashboards,
  see [Classic dashboard panels](/observe/dashboards/classic-dashboards/classic-panels).
</Note>

A *stat chart* visualizes statistic numbers returned by a
[query](/investigate/querying). The chart depicts a value based on the results of the
defined query. You can optionally add a sparkline chart that displays under the
value, in addition to displaying a message when the value hits a defined threshold.

To create a Stat chart or learn more about the configuration options common
to all panels, see [Panels](/observe/dashboards/panels).

## Stat chart queries

Stat charts use one or more
[queries](/observe/dashboards/panels#change-a-panels-query) to retrieve data to
visualize. Stat charts use the following query **Options** to refine the
displayed information, depending on your **Datasource**:

<Tabs>
  <Tab title="Metrics (Prometheus)" id="queries-metrics">
    * **Series naming**: Select a method to filter for metrics:
      * **Labels** require a **Naming pattern**. Use `{{ label_name }}` to include a
        label value. For example, `{{ env }}` will be replaced with values like staging-1, prod-1.
      * **Regex**: Use a [regular expression](/investigate/querying/regular-expressions)
        in the **Regex** text field to match a time series. You can also use a
        **Naming pattern** to rename series using capture groups.
    * **Type**: The [PromQL query](/investigate/querying/promql#basic-querying)
      type: **Instant**, or **Range**.
    * **Reduce values in timeframe to**:
      * **Avg**: The series' mean value, excluding null values.
      * **First**: The series' first value.
      * **First \***: The series' first numeric value.
      * **Last**: The series' last value.
      * **Last \***: The series' last numeric value.
      * **Min**: The series' minimum value.
      * **Max**: The series' maximum value.
      * **Total**: The total all values in the series.

    - **Truncation strategy**: Truncation strategy to apply to the query. This modifies
      the raw query. Observability Platform selects the best strategy for fit when
      possible, and displays `Auto` as the selected strategy.

      Available strategies are:

      * `Auto`
      * `Off`
      * `Avg`
      * `Min`
      * `Max`

      Changing your truncation strategy adds truncation information as additional bands
      or bars on your chart and details into the legend.
  </Tab>

  <Tab title="Logs" id="queries-logs">
    **Series naming**: Select a method to filter for metrics:

    * **Labels** require a **Naming pattern**. Use `{{ label_name }}` to include a
      label value. For example, `{{ env }}` will be replaced with values like staging-1, prod-1.
    * **Regex**: Use a [regular expression](/investigate/querying/regular-expressions)
      in the **Regex** text field to match a time series. You can also use a
      **Naming pattern** to rename series using capture groups.
  </Tab>
</Tabs>

## Configure a stat chart

You can configure a stat chart by
[modifying its <Icon icon="settings" /> **Settings**](/observe/dashboards/panels#edit-a-panel).

Any changes you make in the panel's **Settings** tab are immediately reflected in the
**Preview** pane, but take effect only when you click **Apply** in the **Edit panel**
interface and then **Save** the dashboard.

See [Modify a stat chart's properties](#modify-a-stat-charts-properties) for a list
of the settings you can modify.

Observability Platform doesn't fully support directly editing a panel's JSON
representation and recommends configuring panels in the user interface. Use the JSON
representation only for managing your configuration as code with tools such as
[Chronoctl](/tooling/chronoctl) and [Terraform](/tooling/infrastructure/terraform).

### Modify a stat chart's properties

The **Misc** section in a stat chart's **Settings** tab defines how the stat interprets
and displays the panel's query results.

* **Sparkline**: Enables a sparkline visualization that displays under the value
  generated by the defined query.
* **Font size**: Controls the size of the font for the displayed value.
* **Series Name**: Controls whether or not the time series name displays.

### Modify a stat chart's units and formatting

The **Unit and formatting** section changes the display of units on the chart.

* **Unit**: Defines the unit used to render the Y-axis. This has the most significant
  effect when you enable Abbreviate. Defaults to `Decimal`.
  * **Decimal**: Base 10 values. Observability Platform renders a value of
    `1000000` as `1M`.
  * **Bytes**: As decimal multiple-byte units. Observability Platform renders a
    value of `1000000` as `1MB`.
  * **Time**: Determines the [unit of time](/overview/concepts/time-units)
    that Observability Platform uses to interpret a numeric value.
  * **Percent**: Interprets the value as a percentile, representing 0% to 100% in a
    range of either 0.0 to 1.0 (**Percent (0.0-1.0)**) or 0 and 100
    (**Percent (0-100)**).

    For example, Observability Platform renders a value of `1.0` in **Percent
    (0.0-1.0)** as `100%`, and in **Percent (0-100)** as `1%`.
* **Decimals**: Defines how many decimal places Observability Platform renders for
  values.
  **Default** renders decimal places only if necessary and rounds to the nearest
  value. Numeric values from `0` to `4` render the corresponding number of decimal
  places.
* **Abbreviate**: Toggles whether to abbreviate units on the Y-axis. For example, if
  enabled, Observability Platform renders a value of `100000000` as `100M`. You can
  toggle this setting only if you set the **Unit** to `Decimal` or `Bytes`; `Time`
  units are always abbreviated and `Percent` values don't require the toggle.
  Defaults to `true`.

### Modify a stat chart's thresholds

The **Thresholds** section in a stat chart's **Settings** tab defines values where
Observability Platform renders each threshold range. You can define threshold values
for stat charts as absolute numeric values.

You can enter a message in the **Base settings** section to display in the panel,
without defining a threshold. You're able to enter an independent message for each
threshold you define.

To create a new threshold value:

1. Click the plus sign (**+**) in the **Thresholds** section header.

2. In the field that displays, enter a value where you want Observability Platform to
   end the previous threshold range and begin the next range.

3. Optional: Click the color indicator, depicted as a colored square with text, to
   open a color selector and choose a color for the threshold.

4. Optional: Click the caret (**>**) to expand the threshold definition, and enter text
   in the **Message** field to display on the chart if the threshold is met.

   To display only the text from the **Message** field, click the
   **Show only message** toggle.

5. In the **Edit panel** dialog, click **Apply** to save your changes.

6. After you've finished editing the panel, click **Save** on the dashboard to save
   your changes.

To delete a threshold value, click the caret (**>**) to expand the threshold definition,
and then click the
**<Icon icon="trash" alt="Delete icon" /> Delete** icon on its corresponding
row of the Thresholds section.

### Mark a query as a dynamic threshold

<Note>
  This feature isn't available to all Chronosphere Observability Platform users and
  might not be visible in your app. For information about enabling this feature in your
  environment, contact [Chronosphere Support](/support).
</Note>

In addition to [static thresholds](#modify-a-stat-charts-thresholds) defined in the
panel settings, mark an individual query as a *dynamic threshold* to render its
returned series as dashed reference lines overlaid on the chart. Threshold series
display alongside regular series rather than contributing to stack totals or other
aggregations. Use dynamic thresholds for reference values derived from a query, such
as an SLO target, an error budget limit, or a baseline measurement computed from
another metric.

To mark a query as a dynamic threshold:

1. In the **Edit panel** interface, click the **Query** tab.
2. Next to the query you want to use as a threshold, click the
   **Render query as threshold** button. The query is marked as a threshold
   and its series render differently from regular data series.
3. Optional: Click the colored circle icon that appears to open a color picker
   and choose a custom threshold color.
4. Click **Apply**, and then click **Save** to save the dashboard.

To remove the threshold flag from a query, click the colored circle icon next to
the query, and then click the **<Icon icon="trash" /> Remove threshold from query**
icon in the color picker.
