面积图:体积趋势与定量面积

为了强调连续时间内的趋势方向和总体体积,面积图提供了一种富有表现力的视觉方法。通过填充趋势线与水平轴之间的区域,面积图将重点放在序列间的相对大小和总体体积变化上,例如服务器带宽使用量、活跃用户数量或每日交易吞吐量。

面积图的机制

面积图直接基于折线图配置。通过设置type: 'line'并包含一个areaStyle属性在系列对象上,渲染引擎会自动填充线条路径下方至水平基线的几何空间。

1. 基础设置

要构建一个基本的面积图,定义一个连续的X轴,设置系列type: 'line',并声明一个空的或自定义的areaStyle对象:

option = {
    tooltip: {
        trigger: 'axis'
    },
    xAxis: {
        type: 'category',
        boundaryGap: false,
        data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            type: 'line',
            smooth: true,
            areaStyle: {}, // 启用默认区域填充
            data: [820, 932, 901, 934, 1290, 1330, 1320]
        }
    ]
};

 

高级结构技术

面积图可以通过现代色彩渐变和光滑曲线得到增强,以提高可读性和视觉美感。

1. 渐变填充样式

纯色填充有时会显得沉重。应用半透明线性渐变可创造出现代、简洁的外观,使填充区域柔和地向底部坐标轴渐变:

option = {
    tooltip: {
        trigger: 'axis'
    },
    xAxis: {
        type: 'category',
        boundaryGap: false,
        data: ['一月', '二月', '三月', '四月', '五月', '六月']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            type: 'line',
            smooth: true,
            lineStyle: {
                width: 3,
                color: '#5470c6'
            },
            areaStyle: {
                opacity: 0.8,
                color: {
                    type: 'linear',
                    x: 0,
                    y: 0,
                    x2: 0,
                    y2: 1,
                    colorStops: [
                        { offset: 0, color: 'rgba(84, 112, 198, 0.6)' },
                        { offset: 1, color: 'rgba(84, 112, 198, 0.05)' }
                    ]
                }
            },
            data: [320, 450, 410, 680, 890, 950]
        }
    ]
};

 

2. 重叠多系列面积对比

在单个图表中显示多个面积系列时,调整填充不透明度至关重要,以确保底层数据路径仍然完全可见:

option = {
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['入站流量', '出站流量']
    },
    xAxis: {
        type: 'category',
        boundaryGap: false,
        data: ['00:00', '04:00', '08:00', '12:00', '16:00', '20:00']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '入站流量',
            type: 'line',
            smooth: true,
            areaStyle: { opacity: 0.4 },
            data: [120, 200, 450, 600, 700, 380]
        },
        {
            name: '出站流量',
            type: 'line',
            smooth: true,
            areaStyle: { opacity: 0.4 },
            data: [80, 140, 310, 420, 510, 260]
        }
    ]
};

 

微调布局与间距

由于区域填充会一直延伸到Y轴基线,配置连续的边界间隙可使填充区域与画布边框对齐整齐。

1. 无缝边缘对齐

通过设置boundaryGap: false在分类X轴上设置该参数,填充将从容器网格的绝对左边缘开始,并在最右侧干净地结束:

option = {
    grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
    },
    xAxis: {
        type: 'category',
        boundaryGap: false,
        data: ['Q1', 'Q2', 'Q3', 'Q4']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            type: 'line',
            smooth: true,
            symbol: 'circle',
            symbolSize: 6,
            areaStyle: {
                color: 'rgba(145, 204, 117, 0.3)'
            },
            lineStyle: {
                color: '#91cc75',
                width: 2
            },
            data: [150, 230, 224, 318]
        }
    ]
};

 

战略最佳实践

  • 使用低填充不透明度:实心区域填充会遮挡底层网格线和重叠的系列。为保持高对比度,始终将透明度维持在20%至50%之间。
  • 将系列数量控制在2到3个:过多的重叠区域形状会造成视觉混乱。对于4个或更多累积连续数据集,建议改用堆叠面积图。
  • 设置boundaryGap: false:在时间轴上移除水平边距,可使区域填充跨越整个网格宽度,而不会在左右边缘留下尴尬的空白间隙。
滚动至顶部