整理echarts的一些常用配置「附代码示例」

1. echarts概述

echarts是一款基于JavaScript的数据可视化库,它可以通过简单的配置实现饼图、柱状图、折线图等各种图表的展示。此外,echarts还支持大数据量的可视化展示和动态更新,具有很强的交互能力,可以轻松地与各种前端框架进行整合,如vue、react等。

2. echarts的安装

2.1 通过CDN引入

可以在html中引入如下代码,其中version表示要使用的echarts版本号:

<script src="https://cdn.bootcdn.net/ajax/libs/echarts/version/echarts.min.js"></script>

例如:

<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.1.1/echarts.min.js"></script>

2.2 通过npm安装

在终端执行如下命令即可进行安装:

npm install echarts --save

3. echarts的使用

3.1 创建echarts实例

在html中创建一个DOM容器,然后在JavaScript中,通过如下代码创建echarts实例:

var myChart = echarts.init(document.getElementById('chartContainer'));

其中,'chartContainer'为html中定义的DOM容器的id

3.2 设置echarts基础配置项

利用echarts提供的option配置项来设置图表的基本属性,例如设置图表的标题、轴、系列、鼠标交互等。下面是一个简单的示例:

// 设置图表的基础配置项

myChart.setOption({

title: {

text: '某商场销售数据',

subtext: '纯属虚构'

},

tooltip: {

trigger: 'axis'

},

legend: {

data: ['销量']

},

xAxis: {

type: 'category',

boundaryGap: false,

data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']

},

yAxis: {

type: 'value'

},

series: [{

name: '销量',

type: 'line',

data: [120, 132, 101, 134, 90, 230, 210]

}]

});

3.3 设置图表的样式

在上述代码的基础上,我们可以通过echarts提供的style配置项来针对某些特定的元素进行样式的修改,例如针对x轴、y轴、图例、系列进行样式的修改,我们可以使用如下设置:

// 针对x轴进行样式设置

xAxis: {

axisLine: {

lineStyle: {

color: '#999999',

width: 1

}

},

axisTick: {

show: false

},

axisLabel: {

textStyle: {

color: '#333333'

}

},

splitLine: {

show: false

},

data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']

},

// 针对y轴进行样式设置

yAxis: {

axisLine: {

lineStyle: {

color: '#999999',

width: 1

}

},

axisTick: {

show: false

},

axisLabel: {

textStyle: {

color: '#333333'

}

},

splitLine: {

show: false

}

},

// 针对图例进行样式设置

legend: {

data: ['销量'],

textStyle: {

color: '#666666'

}

},

// 针对系列进行样式设置

series: [{

name: '销量',

type: 'line',

data: [120, 132, 101, 134, 90, 230, 210],

itemStyle: {

normal: {

lineStyle: {

color: '#007aff'

}

}

}

}]

3.4 地图类型的特殊设置

如果我们需要展示地图类型的图表,那么我们需要在基本配置中指定map属性以及指定geo,visualMap的属性。还需要对每个省份设置不同的颜色,下面是详细的配置:

// 设置地图类型的图表配置项

myChart.setOption({

title: {

text: '全国疫情图'

},

tooltip: {

trigger: 'item'

},

visualMap: {

type: 'piecewise',

pieces: [

{ min: 10000 },

{ min: 1000, max: 9999 },

{ min: 500, max: 999 },

{ min: 100, max: 499 },

{ min: 10, max: 99 },

{ min: 1, max: 9 },

{ value: 0, label: '0确诊', color: '#F0FFF0' }],

inRange: {

color: ['#FFECEC', '#FFA0A0', '#FF695E', '#C80000','#8B0000','#7A0000','#FFFFFF']

},

align: 'auto',

bottom: 50,

left: 50

},

series: [{

name: '疫情数据',

type: 'map',

mapType: 'china',

geo: {

roam: false,

map: 'china',

scaleLimit: {

min: 1,

max: 2

},

label: {

show: true

},

emphasis: {

label: {

show: true

}

}

},

itemStyle: {

normal: {

borderColor: '#333333',

borderWidth: 0.5,

areaColor: '#F0FFF0'

}

},

label: {

show: true

},

data: [{ name: '北京', value: Math.round(Math.random() * 1000) },

{ name: '天津', value: Math.round(Math.random() * 1000) },

{ name: '上海', value: Math.round(Math.random() * 1000) },

{ name: '重庆', value: Math.round(Math.random() * 1000) },

{ name: '河北', value: Math.round(Math.random() * 1000) },

{ name: '河南', value: Math.round(Math.random() * 1000) },

{ name: '云南', value: Math.round(Math.random() * 1000) },

{ name: '辽宁', value: Math.round(Math.random() * 1000) },

{ name: '黑龙江', value: Math.round(Math.random() * 1000) },

{ name: '湖南', value: Math.round(Math.random() * 1000) },

{ name: '安徽', value: Math.round(Math.random() * 1000) },

{ name: '山东', value: Math.round(Math.random() * 1000) },

{ name: '新疆', value: Math.round(Math.random() * 1000) },

{ name: '江苏', value: Math.round(Math.random() * 1000) },

{ name: '浙江', value: Math.round(Math.random() * 1000) },

{ name: '江西', value: Math.round(Math.random() * 1000) },

{ name: '湖北', value: Math.round(Math.random() * 1000) },

{ name: '广西', value: Math.round(Math.random() * 1000) },

{ name: '甘肃', value: Math.round(Math.random() * 1000) },

{ name: '山西', value: Math.round(Math.random() * 1000) },

{ name: '内蒙古', value: Math.round(Math.random() * 1000) },

{ name: '陕西', value: Math.round(Math.random() * 1000) },

{ name: '吉林', value: Math.round(Math.random() * 1000) },

{ name: '福建', value: Math.round(Math.random() * 1000) },

{ name: '贵州', value: Math.round(Math.random() * 1000) },

{ name: '广东', value: Math.round(Math.random() * 1000) },

{ name: '青海', value: Math.round(Math.random() * 1000) },

{ name: '西藏', value: Math.round(Math.random() * 1000) },

{ name: '四川', value: Math.round(Math.random() * 1000) },

{ name: '宁夏', value: Math.round(Math.random() * 1000) },

{ name: '海南', value: Math.round(Math.random() * 1000) },

{ name: '台湾', value: Math.round(Math.random() * 1000) },

{ name: '香港', value: Math.round(Math.random() * 1000) },

{ name: '澳门', value: Math.round(Math.random() * 1000) }]

}]

})

4. echarts的交互功能

echarts可以与鼠标、键盘等事件进行交互,并且可以通过触发相应的事件进行响应,例如鼠标移动、鼠标点击、键盘按键等事件,同时,也可以通过设置echarts中的toolbox和dataZoom等工具来实现一些常用的交互功能。

4.1 鼠标移动事件

我们可以针对echarts中的series部分进行鼠标移动事件的响应。例如,在某个系列的item上移动时,在页面中显示tooltip,我们可以通过设置相应的配置项来实现:

// 设置鼠标移动事件响应函数

myChart.on('mouseover', function(params){

myChart.dispatchAction({

type: 'showTip',

seriesIndex: params.seriesIndex,

dataIndex: params.dataIndex,

position: params.event.event.currentTarget.getBoundingClientRect().top + "px"

});

});

myChart.on('mouseout', function(params){

myChart.dispatchAction({

type: 'hideTip',

seriesIndex: params.seriesIndex,

dataIndex: params.dataIndex

});

});

4.2 鼠标点击事件

我们可以通过针对echarts中的series部分进行鼠标点击事件的响应,在选中某一项时执行相应的操作,例如展示一个新的页面、弹出一个框等。以下是一个简单的示例:

// 设置鼠标点击事件响应函数

myChart.on('click', function(params){

if(params.componentType === 'series'){

alert('点击了'+params.seriesName+'系列的'+params.name+'数据项');

}

});

4.3 滚轮缩放事件

echarts支持通过滚轮进行图表的缩放,我们可以通过设置相应的属性来实现该功能:

// 设置鼠标滚轮缩放事件

myChart.on('mousewheel', function(params){

var zoom = myChart.getOption().dataZoom[0];

var arr = [zoom.startValue, zoom.endValue];

myChart.dispatchAction({

type: 'dataZoom',

startValue: arr[0] - (arr[1] - arr[0]) * temperature * params.wheelDelta / 120,

endValue: arr[1] + (arr[1] - arr[0]) * temperature * params.wheelDelta / 120

});

});

4.4 工具箱

echarts提供了toolbox工具箱来方便地进行一些操作,例如全屏、导出、刷新等。可以通过设置工具项的visible属性,来控制是否显示相应的工具,例如下面的示例中,我们只显示全屏和导出两个工具:

// 设置toolbox工具箱

toolbox: {

show: true,

itemSize: 14,

feature: {

dataZoom: {

show: false

},

restore: {

show: true

},

dataView: {

show: false

},

magicType: {

show: false

},

brush: {

show: false

},

saveAsImage: {

show: true

},

fullscreen: {

show: true

}

}

}

4.5 数据区域缩放

数据区域缩放是在图表上选定一段区域,然后通过鼠标滚轮或者拖拽来进行数据的缩放。可以通过设置dataZoom属性,来实现数据的缩放功能,下面是详细的配置:

// 设置数据区域缩放

dataZoom: [{

type: 'inside',

show: true,

start: 0,

end: 100

}, {

type: 'slider',

filterMode: 'none',

orient: 'horizontal',

show: true,

top: 'bottom',

height: 20,

start: 0,

end: 100

}]

5. echarts的常见问题

5.1 交互效果不够灵敏

如果出现交互效果不够灵敏的情况,可以通过设置echarts的取样率,来优化交互效果:

// 设置取样率

myChart.setOption({

series: {

sampling: 'average'

}

});

5.2 图表显示不全

如果出现图表显示不全的情况,有可能是因为echarts的自适应性,可以调整容器的大小或者调整echarts的坐标轴的range:

// 调整容器大小

document.getElementById('chartContainer').style.height = window.innerHeight+'px';

// 调整坐标轴的range

myChart.setOption({

xAxis: {

min: 'dataMin',

max: 'dataMax'

}

});

5.3 数据量过大导致加载时间过长

如果出现数据量过大导致加载时间过长的情况,可以通过使用echarts的数据缩放功能或者分时渲染的方式来展示数据:

// 数据缩放功能

dataZoom: [{

type: 'slider',

show: true,

xAxisIndex: [0],

start: 0,

end: 100,

showDetail: false

}],

// 分时渲染的方式

animation: false,

progressive: true,

progressiveThreshold: 1000

6. 总结

本文介绍了echarts的安装方式、基础配置项和样式设置以及常见的交互功能,同时介绍了一些使用echarts过程

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。