Echarts绘制柱状图

1,854 阅读5分钟

Echarts绘制柱状图

Echarts是一款由百度推出的开源可视化图表库,凭借着丰富的图表类型、优雅的动画效果以及灵活的配置功能,在数据可视化领域广受欢迎。柱状图作为数据可视化中最常见的图表类型之一,通过它可以直观地展示不同类目数据的对比情况,非常适合展现数量差异或者时间序列的变化。本文将详细介绍如何使用Echarts绘制柱状图,并举出详细示例。

基础柱状图

首先,创建一个最简单的柱状图,需要初始化Echarts实例,并指定一个具体的配置项,如下所示:

// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));

// 指定图表的配置项和数据
var option = {
    title: {
        text: '基础柱状图'
    },
    tooltip: {},
    legend: {
        data:['销量']
    },
    xAxis: {
        data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
    },
    yAxis: {},
    series: [{
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
    }]
};

// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);

在这段代码中,实例化了一个echarts对象,并在#main元素中渲染了一个柱状图。配置对象option包括了这个柱状图的所有配置,从标题、工具提示、图例到X轴和Y轴的定义,以及最重要的数据系列。

主题和样式

Echarts提供了多种主题方案,允许用户定制柱状图的外观。例如,可以通过配置项改变柱子的颜色、宽度、样式等。

series: [{
    name: '销量',
    type: 'bar',
    itemStyle: {
        // 定义柱状条样式
        color: 'skyblue',
        barBorderRadius: 5  // 柱状条边角的圆滑程度
    },
    barWidth: '40%', // 柱状条的宽度百分比
    data: [5, 20, 36, 10, 10, 20]
}]

通过itemStylebarWidth配置,可以定制柱状图中柱子的颜色和宽度,以及边角的圆滑程度。

数据标签

在柱状图中,数据标签(data label)可以直观显示每根柱子代表的具体数值,配置方法如下:

series: [{
    // ...其他配置...
    label: {
        show: true, // 开启显示标签
        position: 'top', // 标签的位置
        formatter: '{c}' // 标签内容格式器
    }
    // ...其他配置...
}]

这里的label配置使得每个柱子顶部显示了对应的数值。

堆叠柱状图

在多个数据系列需要对比时,例如展示不同产品的销量随时间的变化,堆叠柱状图能够直观展示这种关系,配置方式如下:

legend: {
    data: ['衬衫', '羊毛衫', '裤子']
},
series: [
    {
        name: '衬衫',
        type: 'bar',
        stack: '总量', // 堆叠组名
        data: [5, 20, 36, 10, 10, 20]
    },
    {
        name: '羊毛衫',
        type: 'bar',
        stack: '总量',
        data: [15, 25, 16, 35, 20, 15]
    },
    {
        name: '裤子',
        type: 'bar',
        stack: '总量',
        data: [30, 45, 13, 25, 20, 30]
    }
]

在这里,stack属性来源于series中的每个系列配置,将属于同一堆叠组的柱状条堆叠起来。

带背景柱状图

为了对比目标值和实际值,带背景色的柱状图在这种情况下非常有用,可以突出显示超出或未达到目标的部分。

xAxis: {
    // ...X轴其他配置...
    data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul']
},
series: [
    {
        // 这是背景条
        type: 'bar',
        silent: true, // 禁止响应和触发鼠标事件
        itemStyle: {
            normal: {color: '#f5f5f5'}
        },
        barGap: '-100%', // 与后面的柱条重叠
        data: [100, 100, 100, 100, 100, 100, 100],
        animation: false
    },
    {
        // 这是前景条
        type: 'bar',
        itemStyle: {
            normal: {
                barBorderRadius: 5,
                color: new echarts.graphic.LinearGradient(
                    0, 0, 0, 1,
                    [
                        {offset: 0, color: '#83bff6'},
                        {offset: 0.5, color: '#188df0'},
                        {offset: 1, color: '#188df0'}
                    ]
                )
            },
            emphasis: {
                color: new echarts.graphic.LinearGradient(
                    0, 0, 0, 1,
                    [
                        {offset: 0, color: '#2378f7'},
                        {offset: 0.7, color: '#2378f7'},
                        {offset: 1, color: '#83bff6'}
                    ]
                )
            }
        },
        data: [50, 60, 70, 60, 75, 80, 70]
    }
]

在这个例子中,通过设置barGap-100%可以使得前景条覆盖在背景条之上,而silent属性确保鼠标事件不会影响背景条。

配置坐标轴

坐标轴的配置对于柱状图是至关重要的,下面是相关的一些配置技巧:

xAxis: {
    type: 'category',
    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
    axisTick: {
        alignWithLabel: true // 坐标轴刻度与标签对齐
    },
    axisLine: {
        lineStyle: {
            color: '#5793f3' // 坐标轴线的颜色
        }
    },
    axisLabel: {
        textStyle: {
            color: '#d14a61' // 刻度标签的颜色
        }
    }
},
yAxis: {
    type: 'value',
    axisLine: {
        lineStyle: {
            color: '#5793f3'
        }
    },
    splitLine: {
        lineStyle: {
            type: 'dashed' // 网格线为虚线
        }
    }
}

此配置可以创建出视觉上更为丰富和直观的坐标轴效果,提供更好的读图体验。

Tooltip提示框

Tooltip是展示更多数据信息的重要工具。在鼠标悬停时,可以显示具体数值、百分比等详细信息。

tooltip: {
    trigger: 'axis', // 触发类型为坐标轴触发
    axisPointer: { // 坐标轴指示器配置
        type: 'shadow' // 默认为直线,此处特别指定为阴影
    },
    formatter: function (params) {
        var tar = params[1];
        return tar.name + '<br/>' + tar.seriesName + ' : ' + tar.value;
    }
}

这里的formatter是一个回调函数,用于定制tooltip显示的内容。

结语

Echarts作为一款功能强大的数据可视化工具,柱状图仅仅是它所提供众多图表类型中的一种。通过灵活地使用Echarts所提供的配置项,开发者可以轻松定制符合需求的柱状图,不仅能够使数据更加直观,还能够赋予图表以生动的视觉效果。随着不断的实践和探索,开发者可以在Echarts的柱状图制作上达到更高的熟练度,将数据故事娓娓道来。