1. Components
  2. line

Line

Lines and areas, from a few points to thousands, with zoom on time series.

Simple

Traffic by device
Month Desktop Mobile
Jan 186 80
Feb 305 200
Mar 237 120
Apr 73 190
May 209 130
Jun 214 140
@php
    $traffic = [
        ['month' => 'Jan', 'desktop' => 186, 'mobile' => 80],
        ['month' => 'Feb', 'desktop' => 305, 'mobile' => 200],
        ['month' => 'Mar', 'desktop' => 237, 'mobile' => 120],
        ['month' => 'Apr', 'desktop' => 73, 'mobile' => 190],
        ['month' => 'May', 'desktop' => 209, 'mobile' => 130],
        ['month' => 'Jun', 'desktop' => 214, 'mobile' => 140],
    ];
@endphp

<x-ui.echart type="line" :data="$traffic" index="month" label="Traffic by device" class="h-72 w-full" :config="[
    'desktop' => ['label' => 'Desktop'],
    'mobile' => ['label' => 'Mobile'],
]" />

Area on a time axis, with zoom

Daily sessions
Date Sessions
2026-01-01 1.4k
2026-01-02 1.4k
2026-01-03 1.5k
2026-01-04 1.5k
2026-01-05 1.5k
2026-01-06 1.5k
2026-01-07 1.6k
2026-01-08 1.6k
2026-01-09 1.6k
2026-01-10 1.6k
2026-01-11 1.6k
2026-01-12 1.6k
2026-01-13 1.6k
2026-01-14 1.6k
2026-01-15 1.6k
2026-01-16 1.6k
2026-01-17 1.6k
2026-01-18 1.6k
2026-01-19 1.6k
2026-01-20 1.7k
2026-01-21 1.7k
2026-01-22 1.7k
2026-01-23 1.7k
2026-01-24 1.7k
2026-01-25 1.7k
2026-01-26 1.7k
2026-01-27 1.7k
2026-01-28 1.7k
2026-01-29 1.7k
2026-01-30 1.7k
2026-01-31 1.6k
2026-02-01 1.6k
2026-02-02 1.6k
2026-02-03 1.6k
2026-02-04 1.6k
2026-02-05 1.6k
2026-02-06 1.6k
2026-02-07 1.6k
2026-02-08 1.6k
2026-02-09 1.6k
2026-02-10 1.6k
2026-02-11 1.6k
2026-02-12 1.6k
2026-02-13 1.6k
2026-02-14 1.6k
2026-02-15 1.5k
2026-02-16 1.5k
2026-02-17 1.5k
2026-02-18 1.5k
2026-02-19 1.4k
2026-02-20 1.4k
2026-02-21 1.4k
2026-02-22 1.4k
2026-02-23 1.3k
2026-02-24 1.3k
2026-02-25 1.3k
2026-02-26 1.3k
2026-02-27 1.3k
2026-02-28 1.3k
2026-03-01 1.4k
2026-03-02 1.4k
2026-03-03 1.4k
2026-03-04 1.4k
2026-03-05 1.4k
2026-03-06 1.4k
2026-03-07 1.4k
2026-03-08 1.4k
2026-03-09 1.4k
2026-03-10 1.3k
2026-03-11 1.3k
2026-03-12 1.3k
2026-03-13 1.3k
2026-03-14 1.3k
2026-03-15 1.3k
2026-03-16 1.3k
2026-03-17 1.4k
2026-03-18 1.4k
2026-03-19 1.4k
2026-03-20 1.4k
2026-03-21 1.5k
2026-03-22 1.5k
2026-03-23 1.5k
2026-03-24 1.6k
2026-03-25 1.6k
2026-03-26 1.6k
2026-03-27 1.6k
2026-03-28 1.6k
2026-03-29 1.6k
2026-03-30 1.6k
2026-03-31 1.6k
2026-04-01 1.6k
2026-04-02 1.6k
2026-04-03 1.6k
2026-04-04 1.6k
2026-04-05 1.7k
2026-04-06 1.7k
2026-04-07 1.7k
2026-04-08 1.8k
2026-04-09 1.8k
2026-04-10 1.8k
2026-04-11 1.9k
2026-04-12 1.9k
2026-04-13 1.9k
2026-04-14 1.9k
2026-04-15 1.9k
2026-04-16 1.9k
2026-04-17 1.9k
2026-04-18 1.9k
2026-04-19 1.9k
2026-04-20 1.8k
2026-04-21 1.8k
2026-04-22 1.8k
2026-04-23 1.8k
2026-04-24 1.8k
2026-04-25 1.8k
2026-04-26 1.8k
2026-04-27 1.9k
2026-04-28 1.9k
2026-04-29 1.9k
2026-04-30 1.9k
2026-05-01 1.9k
2026-05-02 1.9k
2026-05-03 1.9k
2026-05-04 1.9k
2026-05-05 1.9k
2026-05-06 1.8k
2026-05-07 1.8k
2026-05-08 1.8k
2026-05-09 1.7k
2026-05-10 1.7k
2026-05-11 1.7k
2026-05-12 1.7k
2026-05-13 1.7k
2026-05-14 1.7k
2026-05-15 1.6k
2026-05-16 1.7k
2026-05-17 1.7k
2026-05-18 1.7k
2026-05-19 1.7k
2026-05-20 1.7k
2026-05-21 1.7k
2026-05-22 1.7k
2026-05-23 1.7k
2026-05-24 1.6k
2026-05-25 1.6k
2026-05-26 1.6k
2026-05-27 1.6k
2026-05-28 1.5k
2026-05-29 1.5k
2026-05-30 1.5k
2026-05-31 1.5k
2026-06-01 1.5k
2026-06-02 1.5k
2026-06-03 1.5k
2026-06-04 1.5k
2026-06-05 1.5k
2026-06-06 1.6k
2026-06-07 1.6k
2026-06-08 1.6k
2026-06-09 1.6k
2026-06-10 1.6k
2026-06-11 1.7k
2026-06-12 1.7k
2026-06-13 1.7k
2026-06-14 1.7k
2026-06-15 1.7k
2026-06-16 1.6k
2026-06-17 1.6k
2026-06-18 1.6k
2026-06-19 1.6k
2026-06-20 1.7k
2026-06-21 1.7k
2026-06-22 1.7k
2026-06-23 1.7k
2026-06-24 1.8k
2026-06-25 1.8k
2026-06-26 1.8k
2026-06-27 1.9k
2026-06-28 1.9k
2026-06-29 1.9k
2026-06-30 2k
2026-07-01 2k
2026-07-02 2k
2026-07-03 2k
2026-07-04 2k
2026-07-05 2k
2026-07-06 2k
2026-07-07 2k
2026-07-08 2k
2026-07-09 2k
2026-07-10 2k
2026-07-11 2k
2026-07-12 2k
2026-07-13 2k
2026-07-14 2.1k
2026-07-15 2.1k
2026-07-16 2.1k
2026-07-17 2.1k
2026-07-18 2.1k
2026-07-19 2.2k
2026-07-20 2.2k
2026-07-21 2.2k
2026-07-22 2.1k
2026-07-23 2.1k
2026-07-24 2.1k
2026-07-25 2.1k
2026-07-26 2.1k
2026-07-27 2k
2026-07-28 2k
2026-07-29 2k
2026-07-30 2k
2026-07-31 2k
2026-08-01 2k
2026-08-02 2k
2026-08-03 2k
2026-08-04 2k
2026-08-05 2k
2026-08-06 2k
2026-08-07 2k
2026-08-08 2k
2026-08-09 2k
2026-08-10 2k
2026-08-11 1.9k
2026-08-12 1.9k
2026-08-13 1.9k
2026-08-14 1.8k
2026-08-15 1.8k
2026-08-16 1.8k
2026-08-17 1.8k
2026-08-18 1.8k
2026-08-19 1.8k
2026-08-20 1.8k
2026-08-21 1.8k
2026-08-22 1.8k
2026-08-23 1.8k
2026-08-24 1.8k
2026-08-25 1.8k
2026-08-26 1.8k
2026-08-27 1.8k
2026-08-28 1.8k
2026-08-29 1.8k
2026-08-30 1.8k
2026-08-31 1.8k
2026-09-01 1.8k
2026-09-02 1.8k
2026-09-03 1.7k
2026-09-04 1.7k
2026-09-05 1.7k
2026-09-06 1.7k
2026-09-07 1.7k
2026-09-08 1.8k
2026-09-09 1.8k
2026-09-10 1.8k
2026-09-11 1.8k
2026-09-12 1.9k
2026-09-13 1.9k
2026-09-14 1.9k
2026-09-15 2k
2026-09-16 2k
2026-09-17 2k
2026-09-18 2k
2026-09-19 2k
2026-09-20 2k
2026-09-21 2k
2026-09-22 2k
2026-09-23 2k
2026-09-24 2k
2026-09-25 2k
2026-09-26 2k
2026-09-27 2.1k
2026-09-28 2.1k
2026-09-29 2.1k
2026-09-30 2.2k
2026-10-01 2.2k
2026-10-02 2.2k
2026-10-03 2.3k
2026-10-04 2.3k
2026-10-05 2.3k
2026-10-06 2.3k
2026-10-07 2.3k
2026-10-08 2.3k
2026-10-09 2.3k
2026-10-10 2.3k
2026-10-11 2.3k
2026-10-12 2.3k
2026-10-13 2.3k
2026-10-14 2.3k
2026-10-15 2.2k
2026-10-16 2.3k
2026-10-17 2.3k
2026-10-18 2.3k
2026-10-19 2.3k
2026-10-20 2.3k
2026-10-21 2.3k
2026-10-22 2.3k
2026-10-23 2.3k
2026-10-24 2.3k
2026-10-25 2.3k
2026-10-26 2.3k
2026-10-27 2.3k
2026-10-28 2.3k
2026-10-29 2.2k
2026-10-30 2.2k
2026-10-31 2.2k
2026-11-01 2.2k
2026-11-02 2.1k
2026-11-03 2.1k
2026-11-04 2.1k
2026-11-05 2.1k
2026-11-06 2.1k
2026-11-07 2.1k
2026-11-08 2.1k
2026-11-09 2.1k
2026-11-10 2.1k
2026-11-11 2.1k
2026-11-12 2.1k
2026-11-13 2.1k
2026-11-14 2.1k
2026-11-15 2.1k
2026-11-16 2.1k
2026-11-17 2k
2026-11-18 2k
2026-11-19 2k
2026-11-20 2k
2026-11-21 1.9k
2026-11-22 1.9k
2026-11-23 1.9k
2026-11-24 1.9k
2026-11-25 1.9k
2026-11-26 1.9k
2026-11-27 2k
2026-11-28 2k
2026-11-29 2k
2026-11-30 2k
2026-12-01 2k
2026-12-02 2.1k
2026-12-03 2.1k
2026-12-04 2.1k
2026-12-05 2.1k
2026-12-06 2.1k
2026-12-07 2.1k
2026-12-08 2.1k
2026-12-09 2.1k
2026-12-10 2.1k
2026-12-11 2.1k
2026-12-12 2.1k
2026-12-13 2.1k
2026-12-14 2.1k
2026-12-15 2.1k
2026-12-16 2.2k
2026-12-17 2.2k
2026-12-18 2.2k
2026-12-19 2.3k
2026-12-20 2.3k
2026-12-21 2.3k
2026-12-22 2.4k
2026-12-23 2.4k
2026-12-24 2.4k
2026-12-25 2.4k
2026-12-26 2.4k
2026-12-27 2.4k
2026-12-28 2.4k
2026-12-29 2.4k
2026-12-30 2.4k
2026-12-31 2.4k
@php
    // One year of daily sessions. In an app: a query grouped by day.
    $days = collect(range(0, 364))->map(fn (int $i) => [
        'date' => now()->startOfYear()->addDays($i)->format('Y-m-d'),
        'sessions' => (int) round(1400 + $i * 2.4 + sin($i / 14) * 220 + sin($i / 3.1) * 60),
    ])->all();
@endphp

<x-ui.echart type="area" datetime zoom :data="$days" index="date" label="Daily sessions" class="h-80 w-full"
    :config="['sessions' => ['label' => 'Sessions']]" />

Large datasets

Past 2,000 points the chart switches to canvas rendering, and lines are sampled with LTTB so they keep their shape. This one has 10,000 readings.

CPU load, last 7 days: 10000 values from 2026-09-21T14:13 to 2026-09-28T12:52.

@php
    // 10,000 points: rendered on canvas, sampled so the line keeps its shape.
    $readings = collect(range(0, 9999))->map(fn (int $i) => [
        'at' => date('Y-m-d\TH:i', 1790000000 + $i * 60),
        'load' => round(40 + 18 * sin($i / 180) + 9 * sin($i / 23) + ($i % 997 === 0 ? 30 : 0), 1),
    ])->all();
@endphp

<x-ui.echart type="line" datetime zoom :data="$readings" index="at" suffix="%" format="number" label="CPU load, last 7 days"
    class="h-80 w-full" :config="['load' => ['label' => 'CPU load']]" />

See Chart for installation and every prop.