# 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.

- Language: English
- Web page: https://plumevisuals.com/en/tutorials/line-plume-prise-en-main
- Published: 2026-10-14
- Visual: Line Plume, technical reference: https://plumevisuals.com/ai/visuals/line-chart.md
- If an option name in this tutorial differs from the technical reference, the reference is right (it is generated from the visual's code).

## At 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](/en/tutorials/bien-demarrer-visuels-plume), "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](/en/tutorials/bien-demarrer-visuels-plume#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](/en/tutorials/bien-demarrer-visuels-plume#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:

```dax
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:

```dax
// 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](/en/tutorials/bien-demarrer-visuels-plume#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](/en/tutorials/bien-demarrer-visuels-plume#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"](#the-data-you-need) section.

1. In the **Visualizations** pane, click the **Line Plume** icon. An empty frame appears on the page, with the visual's welcome screen.
2. 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*.
3. Drag the `Revenue` measure into **Y axis values**. A line appears: total revenue per month, from January to June 2025.
4. 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.

5. In the **Format** pane, **X axis** card, **Date format** setting: type `MMM yyyy`. The axis labels become "Jan 2025", "Feb 2025"…
6. **Lines** card, **Stroke** group, **Shape**: choose *Smooth*. The corners of the lines become rounded, without overshooting the real values.
7. Still in **Lines**, **Markers** group, **Markers**: choose *Last point*. A dot marks the last value of each line.
8. **Y axis** card, **Suffix (e.g. €)**: type ` €` (with a space before it). The Y axis ticks now end with €.
9. **Title** card, **Title**: type `Monthly revenue by channel`.
10. 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"](/en/tutorials/line-plume-champs-et-reglages) 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 | text` list 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…)](/en/tutorials/line-plume-cas-pratiques): recipes for everyday needs.
- [Line Plume: every field and setting explained](/en/tutorials/line-plume-champs-et-reglages): each field well and each setting.
- [Annotating a line: comments pinned to points](/en/tutorials/courbes-annotations): annotations in detail.
- [Getting started with Plume visuals](/en/tutorials/bien-demarrer-visuels-plume): installation, license, styles and settings shared by all visuals.
- The visual's page: [Line Plume](/en/visuals/line-chart). A question? [Support](/en/support).
