You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ag-grid透视模式下的首列/末列添加迷你折线图?

在AG-Grid透视模式中添加带迷你折线图的自定义列

核心思路

在透视模式下,通过自定义单元格渲染器实现迷你折线图,同时利用lockPosition属性固定自定义列的位置(首列/末列),确保透视列动态变化时自定义列位置不变。

步骤实现

1. 基础透视配置

先确保AG-Grid已开启透视模式,配置分组、透视维度和数值聚合列:

const gridOptions = {
    columnDefs: [
        // 透视行维度(分组列)
        { field: 'category', rowGroup: true, hide: true },
        // 透视列维度
        { field: 'month', pivot: true, hide: true },
        // 数值聚合列
        { field: 'value', aggFunc: 'sum', enableValue: true }
    ],
    pivotMode: true,
    enableSorting: true,
    enableFilter: true
};

2. 添加固定位置的自定义列

在columnDefs中新增自定义列,通过lockPosition指定固定位置:

  • 首列:lockPosition: 'left'
  • 末列:lockPosition: 'right'

同时绑定自定义单元格渲染器:

{
    field: 'trendChart',
    headerName: '趋势',
    lockPosition: 'left', // 固定到首列,替换为'right'可固定到末列
    width: 150,
    cellRenderer: miniLineChartRenderer
}

3. 实现迷你折线图渲染器

以Chart.js为例,编写自定义渲染器函数,从透视行的聚合数据中提取趋势数据并渲染折线图:

// 需提前引入Chart.js
function miniLineChartRenderer(params) {
    // 创建canvas容器
    const canvas = document.createElement('canvas');
    canvas.width = 140;
    canvas.height = 40;
    const ctx = canvas.getContext('2d');

    // 提取透视聚合后的数值与维度标签(需匹配实际生成的字段名)
    const rowData = params.node.data;
    const values = Object.keys(rowData)
        .filter(key => key.startsWith('value-'))
        .map(key => rowData[key]);
    const labels = Object.keys(rowData)
        .filter(key => key.startsWith('month-'))
        .map(key => key.split('-')[1]);

    // 渲染迷你折线图
    new Chart(ctx, {
        type: 'line',
        data: {
            labels: labels,
            datasets: [{
                data: values,
                borderColor: '#2196F3',
                backgroundColor: 'rgba(33, 150, 243, 0.1)',
                fill: true,
                pointRadius: 0,
                tension: 0.4
            }]
        },
        options: {
            responsive: false,
            maintainAspectRatio: false,
            plugins: { legend: { display: false }, tooltip: { enabled: true } },
            scales: {
                x: { display: false },
                y: { display: false }
            }
        }
    });

    return canvas;
}

4. 适配透视数据结构

透视模式下,AG-Grid会将聚合字段命名为[数值字段]-[透视维度值](例如value-Jan),需根据实际字段命名规则调整数据提取逻辑。若使用自定义聚合函数,可通过params.node.aggData获取精准聚合结果。

关键注意事项

  • lockPosition属性可确保自定义列不受透视列动态调整影响,固定在指定位置
  • 折线图需适配单元格尺寸,隐藏坐标轴、图例等冗余元素,保持迷你样式
  • 若使用ECharts等其他图表库,逻辑一致:在单元格内创建容器,初始化迷你图表并传入数据

内容的提问来源于stack exchange,提问作者King Tiger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:45:32