Biểu đồ bản đồ nhiệt: Bản đồ mật độ và mẫu dựa trên lưới

Khi phân tích mật độ hoạt động, xu hướng liên tục hoặc tương quan trên hai chiều rời rạc, thìBiểu đồ bản đồ nhiệt cung cấp một giải pháp trực quan mạnh mẽ. Bằng cách ánh xạ các giá trị dữ liệu vào thang màu động trên một lưới hai chiều, bản đồ nhiệt cho phép người dùng phát hiện ngay lập tứcgiờ cao điểm sử dụng, điểm nghẽn theo mùa hoặc mối quan hệ ma trận ngay lập tức—ví dụ như tải máy chủ theo giờ và ngày trong tuần, nhật ký hoạt động người dùng hoặc ma trận tương quan chéo danh mục.

Cơ chế hoạt động của bản đồ nhiệt

Trong Apache ECharts, bản đồ nhiệt sử dụngtype: 'heatmap' trên lưới Descartes hai chiều. Mỗi điểm dữ liệu yêu cầu một mảng 3 phần tử được định dạng như[xAxisIndex, yAxisIndex, value]. Một thành phần bắt buộcvisualMap ánh xạ các giá trị số thành thang màu liên tục hoặc từng đoạn.

1. Cài đặt cơ bản

Để xây dựng biểu đồ bản đồ nhiệt cơ bản, khai báo các trục phân loại cho cả trục ngang (xAxis) và trục dọc (yAxis) để xác định thang đo, truyền các mảng[xIndex, yIndex, value] vào dữ liệu chuỗi của bạn, và cấu hình một thành phầnvisualMapthành phần:

const hours = ['12am', '2am', '4am', '6am', '8am', '10am', '12pm', '2pm', '4pm', '6pm', '8pm', '10pm'];
const days = ['Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu'];

// Định dạng dữ liệu: [xIndex, yIndex, value]
const data = [
    [0, 0, 5], [1, 0, 1], [2, 0, 0], [3, 0, 0], [4, 0, 12], [5, 0, 24], [6, 0, 38], [7, 0, 42], [8, 0, 35], [9, 0, 20], [10, 0, 10], [11, 0, 6],
    [0, 1, 3], [1, 1, 0], [2, 1, 0], [3, 1, 1], [4, 1, 15], [5, 1, 28], [6, 1, 45], [7, 1, 50], [8, 1, 40], [9, 1, 22], [10, 1, 12], [11, 1, 4],
    [0, 2, 2], [1, 2, 1], [2, 2, 0], [3, 2, 0], [4, 2, 11], [5, 2, 26], [6, 2, 41], [7, 2, 48], [8, 2, 38], [9, 2, 19], [10, 2, 8],  [11, 2, 3],
    [0, 3, 4], [1, 3, 2], [2, 3, 0], [3, 3, 1], [4, 3, 14], [5, 3, 30], [6, 3, 49], [7, 3, 55], [8, 3, 42], [9, 3, 25], [10, 3, 15], [11, 3, 5],
    [0, 4, 6], [1, 4, 3], [2, 4, 1], [3, 4, 2], [4, 4, 10], [5, 4, 20], [6, 4, 32], [7, 4, 36], [8, 4, 28], [9, 4, 18], [10, 4, 9],  [11, 4, 2]
];

option = {
    tooltip: {
        position: 'top'
    },
    grid: {
        height: '50%',
        top: '10%'
    },
    xAxis: {
        type: 'category',
        data: hours,
        splitArea: { show: true }
    },
    yAxis: {
        type: 'category',
        data: days,
        splitArea: { show: true }
    },
    visualMap: {
        min: 0,
        max: 60,
        calculable: true,
        orient: 'horizontal',
        left: 'center',
        bottom: '15%'
    },
    series: [
        {
            name: 'Tải hệ thống',
            type: 'heatmap',
            data: data,
            label: {
                show: true
            },
            emphasis: {
                itemStyle: {
                    shadowBlur: 10,
                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                }
            }
        }
    ]
};

 

Các kỹ thuật cấu trúc nâng cao

Bản đồ nhiệt có thể được tùy chỉnh với các bước màu rời rạc, khoảng cách ô riêng biệt, hoặc kết hợp với tọa độ lịch để theo dõi hoạt động trong suốt một năm.

1. Ánh xạ màu theo từng đoạn và khoảng cách ô tùy chỉnh

Thay vì sử dụng dải màu liên tục, hãy sử dụngvisualMap để nhóm các giá trị thành các băng hoạt động riêng biệt (ví dụ: Thấp, Trung bình, Cao):

option = {
    tooltip: { position: 'top' },
    xAxis: {
        type: 'category',
        data: ['Q1', 'Q2', 'Q3', 'Q4']
    },
    yAxis: {
        type: 'category',
        data: ['Sản phẩm A', 'Sản phẩm B', 'Sản phẩm C']
    },
    visualMap: {
        type: 'piecewise',
        min: 0,
        max: 100,
        left: 'center',
        bottom: '5%',
        orient: 'horizontal',
        pieces: [
            { min: 80, label: 'Hiệu suất cao', color: '#16a34a' },
            { min: 40, max: 79, label: 'Trung bình', color: '#f59e0b' },
            { max: 39, label: 'Cần chú ý', color: '#dc2626' }
        ]
    },
    series: [
        {
            type: 'heatmap',
            data: [
                [0, 0, 85], [1, 0, 92], [2, 0, 78], [3, 0, 88],
                [0, 1, 45], [1, 1, 55], [2, 1, 62], [3, 1, 35],
                [0, 2, 25], [1, 2, 30], [2, 2, 18], [3, 2, 42]
            ],
            label: { show: true },
            itemStyle: {
                borderColor: '#ffffff',
                borderWidth: 2
            }
        }
    ]
};

 

Tinh chỉnh bố cục và dải màu

Việc chọn các điểm dừng màu dễ đọc và bật chế độ phân vùng giúp quét các lưới ma trận lớn trở nên dễ dàng.

1. Tùy chỉnh dải màu và căn chỉnh nhãn

Cấu hình các dải màu đa điểm tùy chỉnh trongvisualMap.inRange để phù hợp với chủ đề nền tảng của bạn:

option = {
    grid: { containLabel: true },
    xAxis: {
        type: 'category',
        data: ['Nút 1', 'Nút 2', 'Nút 3', 'Nút 4']
    },
    yAxis: {
        type: 'category',
        data: ['Dịch vụ X', 'Dịch vụ Y', 'Dịch vụ Z']
    },
    visualMap: {
        min: 0,
        max: 100,
        calculable: true,
        orient: 'horizontal',
        left: 'center',
        bottom: '0%',
        inRange: {
            color: ['#f0f9ff', '#0284c7', '#0f172a'] // Dải màu xanh nhạt đến xám xanh đậm
        }
    },
    series: [
        {
            type: 'heatmap',
            data: [
                [0, 0, 12], [1, 0, 45], [2, 0, 78], [3, 0, 95],
                [0, 1, 34], [1, 1, 67], [2, 1, 89], [3, 1, 23],
                [0, 2, 56], [1, 2, 78], [2, 2, 12], [3, 2, 88]
            ]
        }
    ]
};

 

Các thực hành tốt chiến lược

  • Luôn luôn bao gồm mộtvisualMap: Một bản đồ nhiệt mà không có biểu tượng trực quan buộc người dùng phải đoán ý nghĩa của các màu sắc. Luôn đặt mộtvisualMap rõ ràng ở gần mép khung hình.
  • Sử dụng viền lưới để phân tách: Áp dụng viền trắng mỏng bằng cách sử dụngitemStyle.borderColor: '#fff'borderWidth: 1 hoặc 2 để giữ cho các ô riêng lẻ được phân biệt về mặt thị giác trong các ma trận dày đặc.
  • Đảm bảo văn bản có độ tương phản cao: Nếu nhãn số học của ô đang hoạt động (label.show: true), kiểm tra xem màu chữ có vẫn đọc được rõ ràng trên cả các bước sáng nhất và tối nhất trong bộ thang màu của bạn.
Lên đầu trang