Biểu đồ đồ thị: Bản đồ kiến trúc mạng và bản đồ mối quan hệ

Khi lập bản đồ các mạng lưới liên kết, các phân cấp cấu trúc hoặc các mối quan hệ thực thể phức tạp, thìBiểu đồ đồ thị (hoặc biểu đồ mạng lưới) là khung hình ảnh lý tưởng. Bằng cách hiển thị các mục dưới dạng nút và các kết nối dưới dạng liên kết có hướng hoặc vô hướng, biểu đồ đồ thị cho phép người dùng khám phácác cụm, cây phụ thuộc và luồng quan hệmà các biểu đồ bảng chuẩn không thể truyền đạt—ví dụ như kiến trúc dịch vụ vi mô, tương tác mạng xã hội hoặc đồ thị tri thức.

Cơ chế của biểu đồ đồ thị

Trong Apache ECharts, biểu đồ đồ thị sử dụngtype: 'graph'. Thay vì ánh xạ các giá trị số trực tiếp sang tọa độ trục ngang và trục dọc, biểu đồ đồ thị sử dụng một bộ sưu tập rõ ràng củanút (hoặcdata) vàlinks (hoặccạnh). Sau đó ECharts sắp xếp các nút này bằng cách đặt tọa độ cố định, bố cục hình tròn hoặc bằng một bộ động lực học lực hướng động động.

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

Để xây dựng một biểu đồ mạng cơ bản bằng vật lý hướng lực, khai báo các nút của bạn bên trongdata, ánh xạ các kết nối bên tronglinks, và đặtlayout: 'force':

option = {
    tooltip: {},
    legend: {
        data: ['Dịch vụ', 'Cơ sở dữ liệu']
    },
    series: [
        {
            name: 'Mạng lưới Hệ thống',
            type: 'graph',
            layout: 'force',
            roam: true, // Cho phép thu phóng và di chuyển
            label: {
                show: true,
                position: 'right'
            },
            force: {
                repulsion: 100,
                edgeLength: 80
            },
            data: [
                { id: '0', name: 'Cổng API', symbolSize: 30, category: 0 },
                { id: '1', name: 'Dịch vụ Xác thực', symbolSize: 20, category: 0 },
                { id: '2', name: 'Dịch vụ Đơn hàng', symbolSize: 20, category: 0 },
                { id: '3', name: 'CSDL Người dùng', symbolSize: 25, category: 1 },
                { id: '4', name: 'CSDL Đơn hàng', symbolSize: 25, category: 1 }
            ],
            links: [
                { source: '0', target: '1' },
                { source: '0', target: '2' },
                { source: '1', target: '3' },
                { source: '2', target: '4' }
            ],
            categories: [
                { name: 'Dịch vụ' },
                { name: 'Cơ sở dữ liệu' }
            ]
        }
    ]
};

 

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

Biểu đồ đồ thị hỗ trợ các bộ động lực bố cục thay thế như sắp xếp vòng tròn hoặc các mũi tên định hướng để hiển thị rõ ràng các mối quan hệ phụ thuộc dữ liệu.

1. Bố cục hình tròn với các mũi tên liên kết định hướng

Thiết lập layout: 'circular'để sắp xếp các nút theo cấu trúc vành tròn gọn gàng, và bật các mũi tên cạnh để hiển thị mối quan hệ định hướng giữa các thành phần:

option = {
    tooltip: {},
    series: [
        {
            type: 'graph',
            layout: 'circular',
            roam: true,
            label: {
                show: true,
                position: 'outside'
            },
            edgeSymbol: ['none', 'arrow'], // Vẽ mũi tên tại các đầu nối
            edgeSymbolSize: [0, 8],
            data: [
                { id: 'A', name: 'Nút A', symbolSize: 24 },
                { id: 'B', name: 'Nút B', symbolSize: 24 },
                { id: 'C', name: 'Nút C', symbolSize: 24 },
                { id: 'D', name: 'Nút D', symbolSize: 24 },
                { id: 'E', name: 'Nút E', symbolSize: 24 }
            ],
            links: [
                { source: 'A', target: 'B' },
                { source: 'B', target: 'C' },
                { source: 'C', target: 'D' },
                { source: 'D', target: 'E' },
                { source: 'E', target: 'A' },
                { source: 'A', target: 'C' }
            ],
            lineStyle: {
                color: '#5470c6',
                width: 2,
                curveness: 0.2 // Làm cong các đường nối để tránh chồng lấn
            }
        }
    ]
};

 

Tinh chỉnh bố cục và phong cách nút

Việc điều chỉnh độ cong cạnh, bóng viền nút và các tùy chọn tương tác giúp các cụm mạng dày đặc vẫn dễ đọc trên các trang web tương tác.

1. Màu sắc danh mục nút tùy chỉnh và vật lý lực

Điều chỉnh các giá trị đẩy và kiểu đường nét để tạo ra các cụm được cấu trúc, tách biệt về mặt thị giác:

option = {
    legend: {
        top: '5%',
        left: 'center'
    },
    series: [
        {
            type: 'graph',
            layout: 'force',
            roam: true,
            draggable: true,
            force: {
                repulsion: 250,
                gravity: 0.1,
                edgeLength: [50, 100]
            },
            categories: [
                { name: 'Frontend', itemStyle: { color: '#5470c6' } },
                { name: 'Backend', itemStyle: { color: '#91cc75' } },
                { name: 'Infrastructure', itemStyle: { color: '#fac858' } }
            ],
            data: [
                { name: 'Ứng dụng Web', category: 0, symbolSize: 32 },
                { name: 'Ứng dụng Di động', category: 0, symbolSize: 28 },
                { name: 'Cổng API', category: 1, symbolSize: 26 },
                { name: 'Microservice A', category: 1, symbolSize: 22 },
                { name: 'Microservice B', category: 1, symbolSize: 22 },
                { name: 'Bộ nhớ đệm Redis', category: 2, symbolSize: 20 },
                { name: 'PostgreSQL', category: 2, symbolSize: 24 }
            ],
            links: [
                { source: 'Ứng dụng Web', target: 'Cổng API' },
                { source: 'Ứng dụng Di động', target: 'Cổng API' },
                { source: 'Cổng API', target: 'Microservice A' },
                { source: 'Cổng API', target: 'Microservice B' },
                { source: 'Microservice A', target: 'Bộ nhớ đệm Redis' },
                { source: 'Microservice B', target: 'PostgreSQL' }
            ],
            lineStyle: {
                color: 'source', // Màu đường nối dựa theo màu nút nguồn
                width: 2,
                curveness: 0.1
            }
        }
    ]
};

 

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

  • Kích hoạt roam: trueđể điều hướng:Các mạng tương tác phát triển nhanh chóng. Kích hoạt điều hướng thu phóng và kéo thả giúp người dùng tập trung vào các cụm cụ thể mà không cảm thấy chật chội.
  • Áp dụng độ congcho các cạnh:Thiết lập độ cong nhẹ (ví dụ, lineStyle.curveness: 0.1 đến 0.2) ngăn chặn các liên kết hai chiều giữa hai nút giống nhau bị chồng chéo thành một đường duy nhất.
  • Lực đẩy cân bằng trong vật lý lực: Điều chỉnh lực.đẩy cẩn thận. Các giá trị quá thấp sẽ khiến các nút chồng chéo thành một cụm đặc, trong khi các giá trị quá cao sẽ đẩy các nút ra khỏi khung hình hiển thị hoàn toàn.
Lên đầu trang