# SmartVisuals Time Series for Power BI

> Power BI time-series visual: line, area, combo, sparklines, candlestick and ridgeline from one set of fields, with ETS forecasts and prediction intervals.

- Page: https://www.smartvisuals.io/visuals/time-series
- Fields and settings: https://www.smartvisuals.io/visuals/time-series/settings
- Microsoft Marketplace: https://marketplace.microsoft.com/en-us/product/smartvisuals.smartvisuals-timeseries?tab=overview
- Package: https://www.smartvisuals.io/downloads/smartvisuals-time-series-1.0.0.0.pbiviz
- Sample report (zipped .pbip): https://www.smartvisuals.io/samples/smartvisuals-time-series-sample-1.0.0.0.zip
- Price: Free tier for every viewer; premium $4.49 per user per month or $45 per user per year on Microsoft Marketplace, with a 30-day free trial. Premium works in edit mode without a licence; unlicensed viewers see the free tier, never a blocked visual.
- Certified by Microsoft: no
- Version: 1.0.0.0
- GUID (visualType and publicCustomVisuals): `smartvisualsTimeSeries8778F9314B5C66CBC87EAA01E0B048DF`

## What is free

- **Legend and two value axes at the same time**: Split a measure by Legend and still put a second measure on the right-hand axis, with the zero line aligned across axes when they start at zero.
- **Lines that read themselves**: End-of-line labels with the series name and last value, the maximum and minimum marked, a linear trend line and five rules for missing values.
- **Actual to plan in one line**: Dashed after the last actual period, the gap to plan shaded in two colours, and threshold colouring split exactly at the crossing.
- **Areas and ridgelines**: Overlapping, stacked, 100 % stacked, streamgraph, range band and difference layouts, and a ridgeline (joy plot) of the same series.
- **Combo**: Clustered, stacked or 100 % stacked columns with lines on two axes, the plan as a tick on every column, and IBCS scenario notation.
- **Sparklines**: A table or KPI tiles of up to 10 rows, drawn as line, area, columns, win / loss or last value vs target, on an honest shared scale, with Power BI tooltips.
- **Candlestick**: Candles, hollow candles, OHLC bars, Heikin-Ashi, Renko and close line; a volume pane; one moving average; a trading-day axis.
- **Reference lines, bands, zoom and presets**: Reference lines (a value, or the average, median, percentile, minimum or maximum of the first series), value and period bands, a range navigator, and style presets you can copy between visuals.
- **Tooltips, cross-highlight and drilldown**: Tooltips with the change to the previous point, report page tooltips, cross-filter with Ctrl multi-select, cross-highlight, drilldown on the date hierarchy, bookmarks and the context menu.
- **Conditional formatting and dynamic format strings**: Conditional formatting (fx) on columns and markers, dynamic format strings honoured per value, data labels, a legend, four themes and localization in 20 languages.
- **Accessibility**: One keyboard tab stop with arrow-key navigation, a screen-reader live region, dash and marker shape per series, high contrast and Reduce motion.

## What premium adds

- **Forecasts with prediction intervals**: For every series: exponential smoothing chosen by AICc, 80 and 95 % bands, a horizon in periods or through a date, and anomalies flagged.
- **Comparisons with variance bars**: Against the same period last year (by calendar), the Target or the Comparison field, with the gap shaded and absolute or relative variance bars.
- **Trend tests and seasonal decomposition**: Mann-Kendall with Sen's slope, in the caption and per sparkline row; seasonal decomposition into trend, seasonal and remainder.
- **Time-savers**: Show values as year to date, running total, index or % change; Top N + Others; polynomial, exponential, logarithmic, power and LOESS trends and moving averages with equation and R²; reference lines for every series; the smart caption; annotations from a measure.
- **Every sparkline row**: Sparklines past ten rows (up to 60 in this visual), with a year-end projection per row.
- **Candlestick indicators**: Moving averages 2 and 3, Bollinger bands, VWAP, pivot levels, and RSI, MACD, Stochastic and ATR panes.
- **Value axes 3 and 4 and small multiples**: Two more value axes on the outer edges, and one panel per value of the Small multiples field.

## Fields

| Field | Internal name | Takes | Needed | What it is for |
| --- | --- | --- | --- | --- |
| Axis (date) | `axis` | Column | Optional | The time axis: a date, a date hierarchy level, a number or text periods |
| Legend | `legend` | Column | Optional | One series per value (one row per value in Sparklines) |
| Values | `values` | Measure | Optional | Measures drawn as lines, areas or sparklines |
| Column values | `columns` | Measure | Optional | Measures drawn as columns |
| Secondary axis values | `secondary` | Measure | Optional | Measures drawn on the right-hand axis |
| Target | `target` | Measure | Optional | Plan, budget or target: a dashed series and the base for variances |
| Comparison | `comparison` | Measure | Optional | Previous year or any comparison series from the model |
| Open | `open` | Measure | Optional | Opening value of each period (candles) |
| High | `high` | Measure | Optional | Highest value of each period (candles), or the top of a range band |
| Low | `low` | Measure | Optional | Lowest value of each period (candles), or the bottom of a range band |
| Close | `close` | Measure | Optional | Closing value of each period (candles) |
| Volume | `volume` | Measure | Optional | Traded volume per period (volume pane) |
| Annotation | `annotation` | Measure | Optional | Text measure: a non-blank value pins a note on that period |
| Small multiples | `facet` | Column | Optional | One panel per value (premium) |
| Tooltips | `tooltips` | Measure | Optional | Extra fields in tooltips |

## Format pane

Each card is a key under `visual.objects` in a PBIR visual.json; each setting is a property of it. Toggles take `true`/`false`, choices and text a value in single quotes (`'auto'`), numbers a `D` suffix (`12D`).

### View (`view`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Chart | `type` | `line` (Line), `area` (Area), `combo` (Combo), `sparklines` (Sparklines), `candlestick` (Candlestick), `ridgeline` (Ridgeline (joy plot)) |
| Show View Tabs | `showTabs` | On / off |

### Presets and Templates (`presets`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Apply Preset | `preset` | `none` ((choose to apply)), `executive` (Executive), `finance` (Finance (IBCS)), `trading` (Trading), `monitoring` (Monitoring), `print` (Print) |
| Style Template (copy or paste) | `template` | Text |

### Lines (`lines`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Line Shape | `interpolation` | `straight` (Straight), `smooth` (Smooth (never overshoots)), `stepAfter` (Step (after)), `stepBefore` (Step (before)), `stepMiddle` (Step (middle)) |
| Line Width (0 = theme) | `width` | Number |
| Missing Values | `missing` | `gap` (Leave a gap), `zero` (Treat as zero), `connect` (Connect across), `interpolate` (Interpolate), `previous` (Repeat previous value) |
| Show Values As | `showAs` | `value` (Value), `cumulative` (Running total), `ytd` (Year to date), `index` (Index (first = 100)), `pctChange` (% change vs previous), `movingSum` (Moving sum) |
| Fiscal Year Starts In Month | `fiscalStart` | Number |
| Moving Sum Periods | `window` | Number |
| Show Top N Series (0 = all) | `topN` | Number |
| Other Series | `others` | `context` (Thin grey context lines), `sum` (Sum as "Others"), `hide` (Hide) |

### Area (`area`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Layout | `layout` | `overlap` (Overlapping), `stacked` (Stacked), `percent` (100 % stacked), `stream` (Streamgraph), `range` (Range band (Low to High)), `difference` (Difference between two series) |
| Fill | `fill` | `theme` (From theme), `gradient` (Gradient), `flat` (Flat) |
| Fill Opacity (%, 0 = theme) | `opacity` | Number |
| Line On Top | `showLine` | On / off |
| Stack Order | `order` | `data` (Data order), `total` (By total), `insideOut` (Inside-out) |

### Ridgeline (`ridgeline`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Overlap (%) | `overlap` | Number |
| Height Scale | `scale` | `own` (Each ridge to its own peak), `global` (Shared across ridges) |
| Order | `order` | `data` (Data order), `name` (Name), `peak` (Date of the peak), `total` (Total) |
| Ridge Labels | `showLabels` | On / off |

### Columns (`columns`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Layout | `layout` | `clustered` (Clustered), `stacked` (Stacked), `percent` (100 % stacked) |
| Column Width (%) | `width` | Number |
| Corner Radius (-1 = theme) | `cornerRadius` | Number |
| Hide Zero Values | `hideZeros` | On / off |
| Target As | `target` | `tick` (Tick on each column), `line` (Line) |
| IBCS Scenario Notation | `ibcs` | On / off |

### Sparklines (`sparklines`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Layout | `layout` | `table` (Table), `grid` (Grid of tiles) |
| Sparkline | `type` | `line` (Line), `area` (Area), `column` (Columns), `winloss` (Win / loss), `bullet` (Last value vs target) |
| Table Columns | `columns` | Text |
| Change Compares | `changeBasis` | `window` (Last vs first in view), `previous` (Last vs previous point), `year` (Last vs same period a year ago) |
| Scale | `scale` | `shared` (Shared (honest comparison)), `independent` (Independent per row (shape only)) |
| Sort Rows By | `sortBy` | `data` (Data order), `name` (Name), `last` (Last value), `change` (Change), `changePct` (Change %), `trend` (Trend (Sen's slope)) |
| Sort Direction | `sortDirection` | `asc` (Ascending), `desc` (Descending) |
| Row Height | `rowHeight` | Number |
| Tile Columns (0 = auto) | `tileColumns` | Number |
| Mark First | `markFirst` | On / off |
| Mark Last | `markLast` | On / off |
| Mark Minimum and Maximum | `markMinMax` | On / off |
| Mark Negative Values | `markNegative` | On / off |
| Normal Range From | `bandFrom` | Text |
| Normal Range To | `bandTo` | Text |
| Higher Is Better | `higherIsBetter` | On / off |
| Year-End Projection | `yearEnd` | On / off |

### Candles (`candles`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Style | `style` | `candle` (Candles), `hollow` (Hollow candles), `ohlc` (OHLC bars), `heikin` (Heikin-Ashi), `renko` (Renko), `line` (Close line), `area` (Close area) |
| Up Colour | `upColor` | Colour |
| Down Colour | `downColor` | Colour |
| Brick Size (0 = ATR) | `brickSize` | Number |
| Volume Pane | `showVolume` | On / off |
| Volume Pane Height (%) | `volumeHeight` | Number |
| Show Calendar Gaps | `calendarGaps` | On / off |
| Flag Invalid Bars | `validate` | On / off |

### Indicators (`indicators`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Moving Average 1 Periods (0 = off) | `ma1` | Number |
| Moving Average 1 Type | `ma1Type` | `sma` (SMA), `ema` (EMA), `wma` (WMA) |
| Moving Average 2 Periods (0 = off) | `ma2` | Number |
| Moving Average 2 Type | `ma2Type` | `sma` (SMA), `ema` (EMA), `wma` (WMA) |
| Moving Average 3 Periods (0 = off) | `ma3` | Number |
| Moving Average 3 Type | `ma3Type` | `sma` (SMA), `ema` (EMA), `wma` (WMA) |
| Bollinger Bands | `bollinger` | On / off |
| Bollinger Periods | `bollPeriod` | Number |
| Bollinger Width (σ) | `bollMult` | Number |
| VWAP | `vwap` | On / off |
| RSI Pane | `rsi` | On / off |
| MACD Pane | `macd` | On / off |
| Stochastic Pane | `stochastic` | On / off |
| ATR Pane | `atr` | On / off |
| Pivot Levels | `pivots` | On / off |

### Markers (`markers`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Markers | `show` | `none` (None), `all` (All points), `last` (Last point), `minmax` (Minimum and maximum), `firstlast` (First and last) |
| Shape | `shape` | `theme` (From theme), `circle` (Circle), `square` (Square), `diamond` (Diamond), `triangle` (Triangle) |
| Size | `size` | Number |

### Data Labels (`labels`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | `none` (None), `all` (All points), `last` (Last point), `minmax` (Minimum and maximum), `firstlast` (First and last) |
| Label Every Nth Point | `every` | Number |
| Decimals (-1 = auto) | `decimals` | Number |
| Font Size | `fontSize` | Number |
| Colour | `color` | Colour |
| Background Pill | `background` | On / off |

### End-of-Line Labels (`endLabels`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Content | `content` | `name` (Series name), `value` (Last value), `both` (Name and value) |
| Font Size | `fontSize` | Number |
| Up To N Series (more: legend) | `maxSeries` | Number |

### Highlights (`highlights`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Mark Maximum | `max` | On / off |
| Mark Minimum | `min` | On / off |
| Mark Peaks and Troughs | `peaks` | On / off |
| Peak Prominence (% of range) | `prominence` | Number |

### Threshold Colouring (`threshold`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Colour Above / Below | `show` | On / off |
| Threshold | `source` | `value` (A value), `target` (The Target field) |
| Value | `value` | Number |
| Above Colour | `aboveColor` | Colour |
| Below Colour | `belowColor` | Colour |

### Difference Fill (`difference`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Fill Between Two Series | `show` | On / off |
| Compare With | `against` | `second` (The second series), `target` (The Target field) |
| Higher Is Better | `higherIsBetter` | On / off |
| Better Colour | `goodColor` | Colour |
| Worse Colour | `badColor` | Colour |

### Range Band (`band`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Low-High Band | `show` | On / off |
| Colour | `color` | Colour |
| Opacity (%) | `opacity` | Number |
| Edge Lines | `edges` | On / off |

### Actual and Forecast Styling (`actual`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Actuals End At | `through` | `none` (No styling), `auto` (Last period with an actual), `date` (A date) |
| Date (yyyy-mm-dd) | `date` | Text |
| Vertical Rule | `rule` | On / off |
| Rule Label | `ruleLabel` | Text |

### Trend Line (`trend`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Type | `type` | `none` (None), `linear` (Linear), `poly2` (Polynomial (2nd order)), `poly3` (Polynomial (3rd order)), `poly4` (Polynomial (4th order)), `exponential` (Exponential), `logarithmic` (Logarithmic), `power` (Power), `loess` (LOESS (smooth)), `sma` (Simple moving average), `ema` (Exponential moving average), `wma` (Weighted moving average) |
| Moving Average Periods | `window` | Number |
| LOESS Span (%) | `span` | Number |
| For Every Series | `allSeries` | On / off |
| Line Style | `dash` | `solid` (Solid), `dashed` (Dashed), `dotted` (Dotted), `dashdot` (Dash-dot) |
| Equation and R² in Legend | `showEquation` | On / off |

### Forecast (`forecast`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Forecast | `show` | On / off |
| Periods Ahead (0 = one season) | `horizon` | Number |
| Or Forecast Through (yyyy-mm-dd) | `through` | Text |
| Model | `model` | `auto` (Automatic (lowest AICc)), `ANN` (Simple exponential smoothing), `AAN` (Holt linear trend), `AAdN` (Damped trend), `ANA` (Seasonal, no trend), `AAA` (Holt-Winters additive), `AAdA` (Holt-Winters damped) |
| Season Length (0 = from dates) | `season` | Number |
| Prediction Interval | `level` | `none` (None), `80` (80 %), `95` (95 %), `both` (80 % and 95 %) |
| Mark Anomalies | `anomalies` | On / off |
| For Every Series | `allSeries` | On / off |

### Compare (`compare`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Compare With | `base` | `none` (Nothing), `previousYear` (Same period last year (from the data)), `target` (The Target field), `comparison` (The Comparison field) |
| Show the Comparison Line | `ghost` | On / off |
| Variance Band | `varianceBand` | On / off |
| Variance Bars | `varianceBars` | `off` (Off), `absolute` (Absolute (Δ)), `relative` (Relative (Δ %)) |
| Higher Is Better | `higherIsBetter` | On / off |

### Trend Test (`trendTest`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Test for a Trend (Mann-Kendall) | `show` | On / off |
| Significance Level | `alpha` | `0.1` (10 %), `0.05` (5 %), `0.01` (1 %) |

### Seasonal Decomposition (`decomposition`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Trend, Seasonal and Remainder | `show` | On / off |
| Season Length (0 = from dates) | `season` | Number |

### X-Axis (`xAxis`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Title | `showTitle` | On / off |
| Font Size | `fontSize` | Number |
| Colour | `color` | Colour |
| Vertical Gridlines | `grid` | On / off |

### Y-Axis (`yAxis`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Title | `showTitle` | On / off |
| Minimum (blank = auto) | `min` | Text |
| Maximum (blank = auto) | `max` | Text |
| Start At Zero | `zero` | `auto` (Automatic (columns and areas)), `always` (Always), `never` (Never) |
| Logarithmic Scale | `log` | On / off |
| Decimals (-1 = auto) | `decimals` | Number |
| Font Size | `fontSize` | Number |
| Colour | `color` | Colour |
| Align Zero Across Axes | `align` | On / off |

### Secondary Y-Axes (`y2Axis`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Title | `showTitle` | On / off |
| Minimum (blank = auto) | `min` | Text |
| Maximum (blank = auto) | `max` | Text |
| Logarithmic Scale | `log` | On / off |
| Colour Each Axis Like Its Series | `colorByAxis` | On / off |

### Gridlines (`gridlines`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Style | `style` | `theme` (From theme), `solid` (Solid), `dashed` (Dashed), `dotted` (Dotted), `bands` (Zebra bands), `none` (None) |
| Colour | `color` | Colour |

### Legend (`legend`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Position | `position` | `top` (Top), `bottom` (Bottom), `right` (Right) |
| Font Size | `fontSize` | Number |
| Text Colour | `color` | Colour |

### Reference Lines (`refLines`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Line 1 | `line1` | `none` (None), `value` (A value), `average` (Average), `median` (Median), `percentile` (Percentile), `min` (Minimum), `max` (Maximum), `target` (Target field (last value)) |
| Line 1 Value | `line1Value` | Number |
| Line 1 Percentile | `line1Pct` | Number |
| Line 1 Label | `line1Label` | Text |
| Line 1 Colour | `line1Color` | Colour |
| Line 2 | `line2` | `none` (None), `value` (A value), `average` (Average), `median` (Median), `percentile` (Percentile), `min` (Minimum), `max` (Maximum), `target` (Target field (last value)) |
| Line 2 Value | `line2Value` | Number |
| Line 2 Percentile | `line2Pct` | Number |
| Line 2 Label | `line2Label` | Text |
| Line 2 Colour | `line2Color` | Colour |
| For Every Series | `perSeries` | On / off |
| Vertical Line | `vertical` | `none` (None), `today` (Today), `date` (A date) |
| Vertical Line Date (yyyy-mm-dd) | `verticalDate` | Text |
| Vertical Line Label | `verticalLabel` | Text |

### Reference Bands (`refBands`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Value Band From | `valueFrom` | Text |
| Value Band To | `valueTo` | Text |
| Value Band Label | `valueLabel` | Text |
| Value Band Colour | `valueColor` | Colour |
| Period From (yyyy-mm-dd) | `timeFrom` | Text |
| Period To (yyyy-mm-dd) | `timeTo` | Text |
| Period Label | `timeLabel` | Text |
| Period Colour | `timeColor` | Colour |

### Annotations (`annotations`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Style | `style` | `pin` (Pin with label), `flag` (Flag on the axis), `numbered` (Numbered, listed in the footnote) |
| Shade Until the Next Annotation | `shadeUntilNext` | On / off |
| Font Size | `fontSize` | Number |
| Colour | `color` | Colour |

### Zoom (`navigator`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Range Navigator | `show` | On / off |
| Navigator Height | `height` | Number |
| Ctrl + Wheel Zooms, Drag Pans | `wheel` | On / off |

### Small Multiples (`smallMultiples`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Columns (0 = auto) | `columns` | Number |
| Shared Y-Axis | `sharedY` | On / off |

### Smart Caption (`caption`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Position | `position` | `top` (Top), `bottom` (Bottom) |
| Font Size | `fontSize` | Number |
| Text Colour | `color` | Colour |

### Footnote (`footnote`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Source | `source` | Text |
| State the Methods | `showMethod` | On / off |
| Font Size | `fontSize` | Number |
| Text Colour | `color` | Colour |

### Accessibility (`accessibility`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Distinguish Series Without Colour | `distinguish` | On / off |
| Focus Outline Colour | `focusColor` | Colour |
| Focus Outline Width | `focusWidth` | Number |
| Minimum Text Size (0 = off) | `minFontSize` | Number |

### Theme (`theme`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Theme | `selectedTheme` | `smartvisuals` (SmartVisuals), `dark` (Dark), `clean` (Clean (White)), `slate` (Slate) |
| Font | `font` | `inter` (Inter), `segoe` (Segoe UI), `arial` (Arial), `georgia` (Georgia) |
| Transparent Background | `transparentBg` | On / off |

### Series Colours (`seriesColors`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Colour | `fill` | Colour |

### Series Axes (`seriesAxis`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Axis | `axis` | `1` (Axis 1 (left)), `2` (Axis 2 (right)), `3` (Axis 3 (left, outer)), `4` (Axis 4 (right, outer)) |

### Series Line Styles (`seriesStyle`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Line Style | `dash` | `solid` (Solid), `dashed` (Dashed), `dotted` (Dotted), `dashdot` (Dash-dot) |

### Data Colours (`dataPoint`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Colour | `fill` | Colour |
