1. 柱状图(或称条形图)是一种通过柱形的长度来表现数据大小的一种常用图表类型。
2. 设置柱状图的方式, 是将series的type设为'bar'。
3. 最简单的柱状图
3.1. 代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>最简单的柱状图</title>
<!-- 引入echarts.js -->
<script type="text/javascript" src="echarts.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的DOM -->
<div id="main" style="width: 600px; height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom, 初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
// 为图表配置标题
title: {
text: '最简单的柱状图'
},
// 配置提示信息
tooltip: {},
// 图例组件
legend: {
data: ['销量']
},
// 配置要在X轴显示的项
xAxis: {
type: "category", // 类目
data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
},
// 配置要在Y轴显示的项
yAxis: {},
// 系列列表
series: [
{
name: '销量', // 系列名称
type: 'bar', // 系列图表类型
data: [5, 20, 36, 10, 10, 20] // 系列中的数据内容
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
3.2. 效果图
3.3. 在这个例子中, 横坐标是类目型的(type: "category"), 因此需要在xAxis中指定对应的值; 而纵坐标是数值型的, 可以根据series中的data, 自动生成对应的坐标范围。
4. 多系列的柱状图
4.1. 我们可以用一个系列表示一组相关的数据, 如果需要实现多系列的柱状图, 只需要在series多添加一项就可以了。
4.2. 代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>多系列的柱状图</title>
<!-- 引入echarts.js -->
<script type="text/javascript" src="echarts.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的DOM -->
<div id="main" style="width: 600px; height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom, 初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
// 为图表配置标题
title: {
text: '多系列的柱状图'
},
// 配置提示信息
tooltip: {},
// 图例组件
legend: {
data: ['2020', '2021', '2022']
},
// 配置要在X轴显示的项
xAxis: {
type: "category", // 类目
data: ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie']
},
// 配置要在Y轴显示的项
yAxis: {},
// 系列列表
series: [
{
name: '2020', // 系列名称
type: 'bar', // 系列图表类型
data: [89.3, 92.1, 94.4, 85.4] // 系列中的数据内容
},
{
name: '2021', // 系列名称
type: 'bar', // 系列图表类型
data: [95.8, 89.4, 91.2, 76.9] // 系列中的数据内容
},
{
name: '2022', // 系列名称
type: 'bar', // 系列图表类型
data: [97.7, 83.1, 92.5, 78.1] // 系列中的数据内容
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
4.3. 效果图
5. 为柱条添加背景色
5.1. 有时, 我们希望能够为柱条添加背景色。从ECharts 4.7.0版本开始, 这一功能可以简单地用showBackground开启, 并且可以通过backgroundStyle配置。
5.2. 代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>为柱条添加背景色</title>
<!-- 引入echarts.js -->
<script type="text/javascript" src="echarts.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的DOM -->
<div id="main" style="width: 600px; height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom, 初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
// 为图表配置标题
title: {
text: '为柱条添加背景色'
},
// 配置提示信息
tooltip: {},
// 图例组件
legend: {
data: ['销量']
},
// 配置要在X轴显示的项
xAxis: {
type: "category", // 类目
data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
},
// 配置要在Y轴显示的项
yAxis: {},
// 系列列表
series: [
{
name: '销量', // 系列名称
type: 'bar', // 系列图表类型
showBackground: true,
backgroundStyle: {
color: 'rgba(220, 220, 220, 0.8)'
},
data: [5, 20, 36, 10, 10, 20] // 系列中的数据内容
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
5.3. 效果图
6. 堆叠柱状图
6.1. 有时候, 我们不仅希望知道不同系列各自的数值, 还希望知道它们之和的变化, 这时候通常使用堆积柱状图图来表现。顾名思义, 堆积柱状图就是一个系列的数值"堆积"在另一个系列上, 因而从他们的高度总和就能表达总量的变化。
6.2. 使用EChart实现堆积折线图的方法非常简单, 只需要给一个系列的stack值设置一个字符串类型的值, 这一个值表示该系列堆积的类别。也就是说, 拥有同样stack值的系列将堆积在一组。
6.3. 代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>堆叠柱状图</title>
<!-- 引入echarts.js -->
<script type="text/javascript" src="echarts.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的DOM -->
<div id="main" style="width: 600px; height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom, 初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
// 为图表配置标题
title: {
text: '堆叠柱状图'
},
// 配置提示信息
tooltip: {},
// 图例组件
legend: {
data: ['2020', '2021', '2022']
},
// 配置要在X轴显示的项
xAxis: {
type: "category", // 类目
data: ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie']
},
// 配置要在Y轴显示的项
yAxis: {},
// 系列列表
series: [
{
name: '2020', // 系列名称
type: 'bar', // 系列图表类型
data: [89.3, 92.1, 94.4, 85.4], // 系列中的数据内容
stack: '销量'
},
{
name: '2021', // 系列名称
type: 'bar', // 系列图表类型
data: [95.8, 89.4, 91.2, 76.9], // 系列中的数据内容
stack: '销量'
},
{
name: '2022', // 系列名称
type: 'bar', // 系列图表类型
data: [97.7, 83.1, 92.5, 78.1], // 系列中的数据内容
stack: '销量'
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
6.4. 效果图
6.5. 在这个例子中, 第二个系列所在的位置是在第一个系列的位置的基础上, 上升了第二个系列数值对应的高度。因此, 从第二个系列的位置, 就能看出这两者总和的变化趋势。
6.6. stack的取值用来表明哪些系列将被堆积在一起, 理论上只要取值相同即可, 具体的取值并没有什么区别。但在实际的应用中, 我们建议使用一些有意义的字符串方便阅读。比如, 在一个统计男女人数的图中, 有四个系列, "成年男性"和"男孩"系列需要进行堆积, "成年女性"和"女孩"系列需要堆积。这时, 这两组的的stack值就建议分别设为'男'和'女'。虽然使用'a'和'b'这样没有意义的字符串也能实现同样的效果, 但是代码的可阅读性就差了。