For AI agents: A markdown version of this page is available at https://docs.datadoghq.com/dashboards/widgets/point_plot.md. A documentation index is available at /llms.txt.

Point Plot Widget

A point plot displays one dot per individual event over time, giving you an unaggregated view of your data. Unlike a Timeseries widget, which visualizes trends as averaged or aggregated lines, a point plot surfaces the raw underlying datapoints. Use it to catch the single slow request hidden in an otherwise healthy p95, identify which specific host or service is the outlier, and click directly into that event to investigate.

Point plots are already available in APM Traces, Database Monitoring, and Agent Observability explorers. This widget lets you bring that same view into your own dashboards.

A Point Plot widget showing individual span latency events over time with outliers visible

Setup

Configuration

  1. Choose a data source. Supported sources include Logs, RUM, Traces, Spans, Database Monitoring, and Agent Observability.
  2. Define a query to filter to the events you want to plot.
  3. Choose the attribute or measure to display on the y-axis (for example, duration for latency or error_rate for error tracking).
  4. Optional: group events by a tag or attribute (for example, service, host, or env) to color-code dots by group.
  5. Give your graph a title or leave the field blank for a suggested title.

Options

Y-axis controls

OptionDescription
ScaleSet the y-axis scale to Linear or Log to handle data with wide value ranges.
Min / MaxPin the y-axis to a fixed range, or leave as Auto to fit the data.

Horizontal markers

Add reference lines to mark thresholds such as SLO targets or alert boundaries. Each marker can have a label and a color.

Cross-widget highlighting

When cross-widget highlighting is enabled, hovering over a datapoint highlights the corresponding time range across other compatible widgets on the dashboard.

Context links are enabled by default and can be toggled on or off. Context links bridge dashboard widgets with other pages in Datadog or third-party applications, so you can pivot from a point plot directly into the relevant trace, log, or query.

Global time

Choose whether your widget has a custom time frame or uses the dashboard’s global time frame.

Supported data sources

Data sourceExample use case
APM Traces / SpansPer-span latency, error rate by service
LogsIndividual log event values over time
RUMPer-session load times, individual action durations
Database MonitoringIndividual query durations to identify slow queries
Agent ObservabilityPer-request token counts, latency, or error rates

Use cases

  • Spot outliers hiding in aggregates: A healthy p95 can mask a single extremely slow request. The point plot surfaces that individual event so you can investigate it directly.
  • Identify the source of anomalies: Color-code dots by service, host, or env to pinpoint which specific entity is behaving differently.
  • Monitor per-event performance: Track individual query durations, span latencies, or error rates without aggregation flattening the data.

API

This widget can be used with the Dashboards API. See the following table for the widget JSON schema definition:

Expand All

Field

Type

Description

custom_links

[object]

List of custom links.

is_hidden

boolean

The flag for toggling context menu link visibility.

label

string

The label for the custom link URL. Keep the label short and descriptive. Use metrics and tags as variables.

link

string

The URL of the custom link. URL must include http or https. A relative URL must start with /.

override_label

string

The label ID that refers to a context menu link. Can be logs, hosts, traces, profiles, processes, containers, or rum.

description

string

The description of the widget.

legend

object

Legend configuration for the point plot widget.

type [required]

enum

Type of legend to show for the point plot widget. Allowed enum values: automatic,none

markers

[object]

List of markers for the widget.

display_type

string

Combination of:

  • A severity error, warning, ok, or info
  • A line type: dashed, solid, or bold In this case of a Distribution widget, this can be set to be percentile.

label

string

Label to display over the marker.

time

string

Timestamp for the widget.

value [required]

string

Value to apply. Can be a single value y = 15 or a range of values 0 < y < 10. For Distribution widgets with display_type set to percentile, this should be a numeric percentile value (for example, "90" for P90).

requests [required]

[object]

List of request configurations for the widget.

limit

int64

Maximum number of data points to return.

projection [required]

object

Projection configuration for the point plot widget.

dimensions [required]

[object]

List of dimension mappings for the projection.

alias

string

Alias for the column.

column [required]

string

Source column name from the dataset.

dimension [required]

enum

Dimension of the point plot. Allowed enum values: group,time,y,radius

extra_columns

[string]

Additional columns to include in the projection.

type [required]

enum

Type of the projection. Allowed enum values: point_plot

query [required]

object

Query configuration for a data projection request.

data_source [required]

string

Data source for the query.

indexes

[string]

List of indexes to query.

query_string [required]

string

The query string to filter events.

storage

string

Storage location for the query.

request_type [required]

enum

Type of a data projection request. Allowed enum values: data_projection

time

 <oneOf>

Time setting for the widget.

Option 1

object

Wrapper for live span

hide_incomplete_cost_data

boolean

Whether to hide incomplete cost data in the widget.

live_span

enum

The available timeframes depend on the widget you are using. Allowed enum values: 1m,5m,10m,15m,30m,1h,4h,1d,2d,1w

Show 7 more,1mo,3mo,6mo,week_to_date,month_to_date,1y,alert

Option 2

object

Used for arbitrary live span times, such as 17 minutes or 6 hours.

hide_incomplete_cost_data

boolean

Whether to hide incomplete cost data in the widget.

type [required]

enum

Type "live" denotes a live span in the new format. Allowed enum values: live

unit [required]

enum

Unit of the time span. Allowed enum values: minute,hour,day,week,month,year

value [required]

int64

Value of the time span.

Option 3

object

Used for fixed span times, such as 'March 1 to March 7'.

from [required]

int64

Start time in milliseconds since epoch.

hide_incomplete_cost_data

boolean

Whether to hide incomplete cost data in the widget.

to [required]

int64

End time in milliseconds since epoch.

type [required]

enum

Type "fixed" denotes a fixed span. Allowed enum values: fixed

title

string

Title of the widget.

title_align

enum

How to align the text on the widget. Allowed enum values: center,left,right

title_size

string

Size of the title.

type [required]

enum

Type of the point plot widget. Allowed enum values: point_plot

default: point_plot

yaxis

object

Axis controls for the widget.

include_zero

boolean

Set to true to include zero.

label

string

The label of the axis to display on the graph. Only usable on Scatterplot Widgets.

max

string

Specifies maximum numeric value to show on the axis. Defaults to auto.

default: auto

min

string

Specifies minimum numeric value to show on the axis. Defaults to auto.

default: auto

scale

string

Specifies the scale type. Possible values are linear, log, sqrt, and pow## (for example pow2 or pow0.5).

default: linear

{
  "custom_links": [
    {
      "is_hidden": false,
      "label": "Search logs for {{host}}",
      "link": "https://app.datadoghq.com/logs?query={{host}}",
      "override_label": "logs"
    }
  ],
  "description": "string",
  "legend": {
    "type": "automatic"
  },
  "markers": [
    {
      "display_type": "error dashed",
      "label": "Error threshold",
      "time": "string",
      "value": "y = 15"
    }
  ],
  "requests": [
    {
      "limit": "integer",
      "projection": {
        "dimensions": [
          {
            "alias": "string",
            "column": "duration",
            "dimension": "y"
          }
        ],
        "extra_columns": [],
        "type": "point_plot"
      },
      "query": {
        "data_source": "logs",
        "indexes": [],
        "query_string": "service:web-store",
        "storage": "string"
      },
      "request_type": "data_projection"
    }
  ],
  "time": {
    "hide_incomplete_cost_data": false,
    "live_span": "5m"
  },
  "title": "string",
  "title_align": "string",
  "title_size": "string",
  "type": "point_plot",
  "yaxis": {
    "include_zero": false,
    "label": "string",
    "max": "string",
    "min": "string",
    "scale": "string"
  }
}

Further reading