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.
Setup
Configuration
- Choose a data source. Supported sources include Logs, RUM, Traces, Spans, Database Monitoring, and Agent Observability.
- Define a query to filter to the events you want to plot.
- Choose the attribute or measure to display on the y-axis (for example,
duration for latency or error_rate for error tracking). - Optional: group events by a tag or attribute (for example,
service, host, or env) to color-code dots by group. - Give your graph a title or leave the field blank for a suggested title.
Options
Y-axis controls
| Option | Description |
|---|
| Scale | Set the y-axis scale to Linear or Log to handle data with wide value ranges. |
| Min / Max | Pin 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.
When cross-widget highlighting is enabled, hovering over a datapoint highlights the corresponding time range across other compatible widgets on the dashboard.
Context links
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 source | Example use case |
|---|
| APM Traces / Spans | Per-span latency, error rate by service |
| Logs | Individual log event values over time |
| RUM | Per-session load times, individual action durations |
| Database Monitoring | Individual query durations to identify slow queries |
| Agent Observability | Per-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
The flag for toggling context menu link visibility.
The label for the custom link URL. Keep the label short and descriptive. Use metrics and tags as variables.
The URL of the custom link. URL must include http or https. A relative URL must start with /.
The label ID that refers to a context menu link. Can be logs, hosts, traces, profiles, processes, containers, or rum.
The description of the widget.
Legend configuration for the point plot widget.
Type of legend to show for the point plot widget.
Allowed enum values: automatic,none
List of markers for the widget.
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 to display over the marker.
Timestamp for the widget.
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).
List of request configurations for the widget.
Maximum number of data points to return.
Projection configuration for the point plot widget.
List of dimension mappings for the projection.
Source column name from the dataset.
Dimension of the point plot.
Allowed enum values: group,time,y,radius
Additional columns to include in the projection.
Type of the projection.
Allowed enum values: point_plot
Query configuration for a data projection request.
Data source for the query.
List of indexes to query.
The query string to filter events.
Storage location for the query.
Type of a data projection request.
Allowed enum values: data_projection
Time setting for the widget.
hide_incomplete_cost_data
Whether to hide incomplete cost data in the widget.
The available timeframes depend on the widget you are using.
Allowed enum values: 1m,5m,10m,15m,30m,1h,4h,1d,2d,1wShow 7 more
,1mo,3mo,6mo,week_to_date,month_to_date,1y,alert
Used for arbitrary live span times, such as 17 minutes or 6 hours.
hide_incomplete_cost_data
Whether to hide incomplete cost data in the widget.
Type "live" denotes a live span in the new format.
Allowed enum values: live
Unit of the time span.
Allowed enum values: minute,hour,day,week,month,year
Used for fixed span times, such as 'March 1 to March 7'.
Start time in milliseconds since epoch.
hide_incomplete_cost_data
Whether to hide incomplete cost data in the widget.
End time in milliseconds since epoch.
Type "fixed" denotes a fixed span.
Allowed enum values: fixed
How to align the text on the widget.
Allowed enum values: center,left,right
Type of the point plot widget.
Allowed enum values: point_plot
default: point_plot
Axis controls for the widget.
Set to true to include zero.
The label of the axis to display on the graph. Only usable on Scatterplot Widgets.
Specifies maximum numeric value to show on the axis. Defaults to auto.
default: auto
Specifies minimum numeric value to show on the axis. Defaults to auto.
default: auto
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
Additional helpful documentation, links, and articles: