Clear line charts in Power BI with Line Plume
Get started with Line Plume in Power BI: prepare your data, plot one or several lines on a date axis and adjust the essential settings in about 10 minutes.
Lire en françaisAt a glance
- What the visual does. Line Plume draws lines and areas, like a temperature log pinned to the wall: one line per series, rising and falling over time. Dates are spaced according to their real distance (a two-month gap shows). You can add comments pinned to points, a moving average, a trend extended into the future, targets and events.
- When to use it:
- track a change over time (monthly revenue, daily visits, weekly stock);
- compare several series over the same period (sales channels, regions, actual and budget);
- compare two quantities on different scales (an amount in euros and a rate in %) thanks to the secondary Y axis;
- explain a peak or a dip right on the line, or show a forecast.
- When to use something else: to compare categories with no notion of time (top 10 products), use Bar Plume instead. For bars and lines in the same chart, Line Plume is not the right fit: it only draws lines and areas.
- By the end, you will know how to:
- prepare a date table and a measure, and choose between a continuous date axis and a categorical axis;
- plot several lines, with several measures or with the Legend (series) field;
- add a secondary Y axis and adjust each series separately with the Per-series settings card;
- annotate a point in three ways;
- add a moving average, a trend with a forecast and a dashed future part.
- What you need:
- Power BI Desktop (recent version);
- the Line Plume visual installed (see the shared basics, "Installing a Plume visual");
- a column of dates (or months, years, categories) and at least one numeric measure.
The data you need
The expected shape
The visual reads one row per X axis value (one row per month, for example), and one row per X axis value and per series when you use the Legend (series) field.
- The X axis is a column (a column of your table, see the glossary): a date, a number (a year written as 2024) or text ("Q1 2025").
- The series (optional) is also a column: each distinct value (Store, Online…) gives one line.
- The values are measures (a DAX calculation, see the glossary, that adapts to filters, for example "sum of amounts"). The visual asks for a measure rather than a raw column because the calculation must be redone for each month and each series.
The sample dataset
A home goods retailer tracks its sales from January to June 2025, across two channels (fictitious data). One row per month and per channel.
| Month | Channel | Amount | Margin |
|---|---|---|---|
| 2025-01-01 | Store | 42000 | 15100 |
| 2025-01-01 | Online | 18500 | 7200 |
| 2025-02-01 | Store | 38400 | 13600 |
| 2025-02-01 | Online | 19900 | 7900 |
| 2025-03-01 | Store | 45200 | 16500 |
| 2025-03-01 | Online | 24300 | 9800 |
| 2025-04-01 | Store | 40100 | 14200 |
| 2025-04-01 | Online | 22800 | 9000 |
| 2025-05-01 | Store | 47600 | 17400 |
| 2025-05-01 | Online | 27500 | 11300 |
| 2025-06-01 | Store | 51300 | 18900 |
| 2025-06-01 | Online | 31200 | 12900 |
To create this table without an Excel file: Modeling › New table, then paste:
Sales =
DATATABLE (
"Month", DATETIME,
"Channel", STRING,
"Amount", DOUBLE,
"Margin", DOUBLE,
{
{ "2025-01-01", "Store", 42000, 15100 },
{ "2025-01-01", "Online", 18500, 7200 },
{ "2025-02-01", "Store", 38400, 13600 },
{ "2025-02-01", "Online", 19900, 7900 },
{ "2025-03-01", "Store", 45200, 16500 },
{ "2025-03-01", "Online", 24300, 9800 },
{ "2025-04-01", "Store", 40100, 14200 },
{ "2025-04-01", "Online", 22800, 9000 },
{ "2025-05-01", "Store", 47600, 17400 },
{ "2025-05-01", "Online", 27500, 11300 },
{ "2025-06-01", "Store", 51300, 18900 },
{ "2025-06-01", "Online", 31200, 12900 }
}
)
The measures to create
Select the Sales table, then Modeling › New measure, once per measure:
// Revenue: adds up the Amount column
// for the month and channel of each point on the line.
Revenue = SUM ( Sales[Amount] )
// Margin rate: margin divided by revenue.
// DIVIDE avoids the divide-by-zero error (returns blank instead).
// Give it the Percentage format (Measure tools › Format).
Margin Rate = DIVIDE ( SUM ( Sales[Margin] ), [Revenue] )
// Two "filtered" measures: useful to plot several lines
// WITHOUT the Legend field (see section 3).
// CALCULATE recomputes [Revenue] keeping only the given channel.
Store Revenue = CALCULATE ( [Revenue], Sales[Channel] = "Store" )
Online Revenue = CALCULATE ( [Revenue], Sales[Channel] = "Online" )
// A fixed target, for the how-to guides (horizontal line, threshold).
Target = 45000
Data preparation pitfalls
- The Month column must be of type Date (or Date/Time). A text value such as "Jan 2025" would be treated as a category: evenly spaced points, and possibly alphabetical sorting.
- Use the field itself, not its date hierarchy. Power BI often creates a date hierarchy (Year › Quarter › Month › Day, see the glossary). If you leave it, the visual only receives the years. In the X axis well, click the arrow next to the field and choose its name (Month) instead of Date Hierarchy.
- A single granularity (the level of detail, see the glossary): set every date to the 1st of the month if you track months. Dates down to the day would give one point per day.
- Blank values: a month with no sales returns a blank value. By default the line breaks; you choose this behavior in Lines › Missing values.
- Volume: the visual loads up to 30,000 X axis values per batch, then automatically fetches the rest up to 100,000. Beyond that, a warning icon tells you that only the first rows are loaded. Up to 60 series.
Step by step: your first Line Plume chart in 10 minutes
You start from the Sales table and the Revenue and Margin Rate measures from the "The data you need" section.
-
In the Visualizations pane, click the Line Plume icon. An empty frame appears on the page, with the visual's welcome screen.
-
In the Data pane, drag
Sales[Month]into the X axis well. If Power BI shows Date Hierarchy, click the arrow on the field and choose Month. -
Drag the
Revenuemeasure into Y axis values. A line appears: total revenue per month, from January to June 2025. -
Drag
Sales[Channel]into Legend (series). The line splits in two: a Store line and an Online line, each in its own color, with a legend at the top. -
In the Format pane, X axis card, Date format setting: type
MMM yyyy. The axis labels become "Jan 2025", "Feb 2025"… -
Lines card, Stroke group, Shape: choose Smooth. The corners of the lines become rounded, without overshooting the real values.
-
Still in Lines, Markers group, Markers: choose Last point. A dot marks the last value of each line.
-
Y axis card, Suffix (e.g. €): type
€(with a space before it). The Y axis ticks now end with €. -
Title card, Title: type
Monthly revenue by channel. -
Hover over the chart. A vertical guide follows the mouse and a single tooltip gives the revenue of both channels for the hovered month.
Expected result: two smooth lines, Store above Online, both rising until June 2025, with a readable date axis and amounts in euros. Everything you set is free: no watermark.
Troubleshooting
| What you see | Likely cause | Fix |
|---|---|---|
| The X axis only shows years | The date hierarchy was dropped instead of the field | In the X axis well, field arrow › choose Month (the field itself) |
| You can't add a second measure to Y axis values | A field is in Legend (series): only one measure per axis | Remove the Legend to plot several measures, or put the second one in Secondary Y axis values |
| The Secondary Y axis card is nowhere to be found | No measure in Secondary Y axis values | Drag a measure into it |
| Date format or Long labels doesn't appear | The first only shows on a date axis, the second only on a categorical axis | Check the column type and X axis › Axis type |
| The same annotation on every line | The annotation measure ignores the series | Restrict it with SELECTEDVALUE (see the Annotations how-to guide) |
| An annotation is missing; message "Annotation ignored (series or x not found)" at the bottom, in edit mode | Unknown series name, unreadable date, or x outside the axis range | Fix the line; write dates as 2025-03-15, which is always understood |
03/15/2025 misread in a list | Day/month order follows the number format locale | Use the 2025-03-15 format |
| A Lines card setting has no effect on one series | The series has its own value in Per-series settings, which wins | Set the option back to Same as the Lines card for that series |
| No forecast | Forecast periods is 0, or the series has fewer than 3 points (Holt-Winters without two full seasons falls back to Holt) | Set Forecast periods, add more history |
| Points disappear on a logarithmic scale | Zero or negative values are ignored on a log scale | Switch back to Linear or filter out those values |
| Warning icon: only the first rows are loaded | More than 100,000 values on the X axis | Reduce the granularity (months instead of days) or filter |
| "Plume Visuals · Premium preview" watermark | A ★ feature is used without a valid key | Paste your key, or turn off the ★ feature (see the "Premium ★ features" section) |
Key takeaways
- Put a column in X axis (the date field itself, not the hierarchy) and measures in the values; the continuous date axis respects the real distance between dates.
- Several lines: several measures without a Legend, or one measure and the Legend (series) field, never both.
- The secondary Y axis compares two quantities on different scales; the Per-series settings card handles exceptions (All series, then one series: the series wins).
- An annotation is pinned to a point (x, series): Annotate button,
x | series | textlist or text measure. - The Analytics pane adds a moving average, a trend with a forecast and reference lines; the dashed future part separates actuals from the forecast on a single line.
Learn more
- Line Plume: 8 how-to guides (dual axis, forecast, moving average…): recipes for everyday needs.
- Line Plume: every field and setting explained: each field well and each setting.
- Annotating a line: comments pinned to points: annotations in detail.
- Getting started with Plume visuals: installation, license, styles and settings shared by all visuals.
- The visual's page: Line Plume. A question? Support.