Chart Widget
Time-series chart for trends. The Chart widget plots one or more series over time as lines, areas, or bars, with up to 10 series per widget. It's the workhorse for any "how is this changing" question.
What it shows
A time-series plot with configurable series types (line, area, bar) and aggregation. Multi-series, multi-device, multi-field, fully arbitrary mix.
Configuring a Chart widget
The Chart config drawer has more options than other widgets. Take them one tab at a time.
Series tab
Define each line, area, or bar on the chart. Up to 10 series.
For each series:
| Field | What it does |
|---|---|
| Device | Pick the device. Different series can bind to different devices. |
| Field | Pick the field. Same field across multiple devices ("temperature across all sites") works. Different fields on the same device ("temperature vs humidity") also works. |
| Label | What this series is called in the legend (defaults to field name). |
| Color | Hex color. Defaults are picked from a built-in palette so series stay visually distinct. |
| Kind | line, area, or bar. Mix kinds on the same chart if it makes sense (e.g., line for actual values + area for confidence band). |
| Interpolation (line/area only) | linear, smooth, or step. Use step for discrete state changes; smooth for continuous signals. |
| Y-axis | Left (default) or Right. Use Right for a secondary scale when series have very different ranges. |
| Values mode | absolute (raw values, default) or change (delta between consecutive buckets). |
Time & aggregation tab
| Field | What it does |
|---|---|
| Time range mode | inherit (use the dashboard's time picker, default) or custom (set this widget's own range). |
| Custom range | If custom: pick from 1h / 24h / 7d / 14d / 30d, or specify explicit from/to timestamps. |
| Bucket size | The interval each data point covers: auto, 1m, 5m, 15m, 1h, 1d. auto picks a sensible bucket based on the visible time range. |
| Aggregation (per series) | How each bucket is summarized: avg, min, max, sum, last, count. |
Auto bucketing rule of thumb: ioX-Pulse picks buckets so the chart has roughly 30-200 data points across the visible range. Last hour = 1m buckets; last 7 days = roughly hourly buckets. Override only when you have a specific reason.
Axes tab
| Field | What it does |
|---|---|
| Left Y-axis label | Text rendered next to the left axis. |
| Left Y-axis min/max | auto (fit to data, default) or explicit numeric bounds. |
| Right Y-axis | Toggle on if any series uses the right axis. Independent label and bounds. |
| Logarithmic Y-axis | Toggle per axis. Useful for values spanning multiple orders of magnitude. |
| Show grid | Toggle the gridlines on/off. |
The X-axis is always time; you can't pick a non-time field for the X-axis.
Appearance tab
| Field | What it does |
|---|---|
| Legend position | top, right, bottom, or hidden. |
| Tooltip mode | single (just the hovered series) or all (all series at the hovered timestamp). |
| Point markers | none (clean line), dot, or circle. |
| Show value labels | Prints each data point's value on the chart so viewers don't have to hover for the number. Off by default; best on sparse series, since dense ones get crowded. |
| Null handling | gap (line breaks on missing data), connect (interpolates across gaps), or zero (treats null as 0). Pick based on what missing data means for your metric. |
Threshold reference lines
The Chart widget supports reference lines via threshold rules. Each rule draws a horizontal line at the configured value with the configured color and optional label.
Common uses:
- Alarm thresholds: a red line at the "too hot" temperature.
- Target levels: a green line at the desired operating value.
- Soft limits: a yellow line at "approaching limit".
CSV export
There are two export controls, for two different audiences:
- Enable CSV export (Appearance tab) controls the download-to-CSV button on the widget itself. Charts have it on by default; turn it off to hide the button on a given chart.
- Allow export (Basic tab, visible only on device-scope dashboards) lets the end users viewing a device dashboard download the data. When enabled, they see a Download CSV button on the rendered widget.
The export contains the currently visible time range in the widget. On device dashboards the filename includes the device's DevEUI so multiple exports stay distinct.
Tips
- For comparing the same metric across many devices, pick a distinct color per device and use linear interpolation for clean reading.
- For showing rate-of-change (e.g., "battery drain over 24h"), use
changevalues mode with1hbucket size. - When mixing fields with very different ranges (temperature in °C and rainfall in mm), use the right Y-axis for the secondary metric.
- Set explicit Y-axis bounds when the natural range is meaningful (e.g., 0-100 for percentages).
- For sparse data (devices that report every few hours), use
lastaggregation with appropriate bucket size to avoid noise. - For short windows with sub-daily buckets (e.g. 1-hour windows), the X-axis labels include the time, not just the date, so you can read the series without hovering.
When to use a different widget
- For a single current reading -> Value widget.
- For a state indicator (on/off, healthy/unhealthy) -> Status widget.
- For showing position in a range -> Gauge widget.
- For a list view of recent uplinks -> History widget.