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]
}]
通过itemStyle和barWidth配置,可以定制柱状图中柱子的颜色和宽度,以及边角的圆滑程度。
数据标签
在柱状图中,数据标签(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的柱状图制作上达到更高的熟练度,将数据故事娓娓道来。