ECharts是百度的一个项目,后来百度把Echart捐给apache,用于图表展示,提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。
官方网站:https://echarts.baidu.com/
入门参考:官网->文档->教程->5分钟上手ECharts
(1)创建html页面:柱图.html
(2)引入ECharts
2
(3)定义图表区域
1
2
(4)渲染图表
ECharts
27
实例参考:官网->实例->官方实例 https://echarts.baidu.com/examples/
折线图.html
option = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, series: [ { data: [150, 230, 224, 218, 135, 147, 260], type: 'line' } ] };
npm install --save [email protected]
src/router/index.js
在统计分析路由中增加子路由
{
path: '/sta',
component: Layout,
redirect: '/sta/create',
name: '统计分析',
meta: { title: '统计分析', icon: 'example' },
children: [
{
path: 'create',
name: '生成数据',
component: () => import('@/views/sta/create'),
meta: { title: '生成数据', icon: 'table' }
},
{
path: 'show',
name: '图表显示',
component: () => import('@/views/sta/show'),
meta: { title: '图表显示', icon: 'tree' }
}
]
},
生成
61
@GetMapping("getShowData/{type}/{begin}/{end}") public R getShowData(@PathVariable String type,@PathVariable String begin,@PathVariable String end){ Map
map = statisticsDailyService.getShowData(type,begin,end); return R.ok().data(map); }
接口
MapgetShowData(String type, String begin, String end);
实现
@Override
public Map getShowData(String type, String begin, String end) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.between("date_calculated",begin,end);
queryWrapper.select("date_calculated",type);//查询需要的列,数据时间和类型
List lists = baseMapper.selectList(queryWrapper);
//返回的数据有两部分:date_calculated 和 所类型type
//前端需要json数据,对于java代码的list集合,需要返回x、y轴两个list数据
ArrayList dateList = new ArrayList<>();
ArrayList typeList = new ArrayList<>();
//遍历lists封装两个list集合
for (StatisticsDaily list:lists){
dateList.add(list.getDateCalculated());//封装日期
if (type.equals("login_num")){//封装数量类型
typeList.add(list.getLoginNum());
}
if (type.equals("register_num")){
typeList.add(list.getRegisterNum());
}
if (type.equals("video_view_num")){
typeList.add(list.getVideoViewNum());
}
if (type.equals("course_num")){
typeList.add(list.getCourseNum());
}
}
Map map = new HashMap<>();
map.put("dateList",dateList);
map.put("typeList",typeList);
return map;
}
import request from '@/utils/request'
export default {
// 1 生成统计数据
createStaData(day) {
return request({
url: '/staservice/sta/registerCount/' + day,
method: 'post'
})
},
// 2 获取统计数据
getDataSta(searchObj) {
return request({
url: `/staservice/sta/showData/${searchObj.type}/${searchObj.begin}/${searchObj.end}`,
method: 'get'
})
}
}
import sta from '@/api/sta'
3
import echarts from 'echarts'
import staApi from '@/api/sta'
export default {
data() {
return {
searchObj: {},
btnDisabled: false,
xData: [],
yData: []
}
},
methods: {
showChart() {
staApi.getDataSta(this.searchObj)
.then(response => {
console.log('*****************' + response)
this.yData = response.data.numDataList
this.xData = response.data.date_calculatedList
// 调用下面生成图表的方法,改变值
this.setChart()
})
},
setChart() {
// 基于准备好的dom,初始化echarts实例
this.chart = echarts.init(document.getElementById('chart'))
// console.log(this.chart)
// 指定图表的配置项和数据
var option = {
title: {
text: '数据统计'
},
tooltip: {
trigger: 'axis'
},
dataZoom: [{
show: true,
height: 30,
xAxisIndex: [
0
],
bottom: 30,
start: 10,
end: 80,
handleIcon: 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
handleSize: '110%',
handleStyle: {
color: '#d3dee5'
},
textStyle: {
color: '#fff'
},
borderColor: '#90979c'
},
{
type: 'inside',
show: true,
height: 15,
start: 1,
end: 35
}],
// x轴是类目轴(离散数据),必须通过data设置类目数据
}
}
}
1
xAxis: { type: 'category', data: this.xData }, // y轴是数据轴(连续数据) yAxis: { type: 'value' }, // 系列列表。每个系列通过 type 决定自己的图表类型 series: [{ // 系列中的数据内容数组 data: this.yData, // 折线图 type: 'line' }] } this.chart.setOption(option)
15
参考配置手册:https://echarts.baidu.com/option.html#title