echarts简单入门
静态数据展示
创建html文件
引入相关依赖
echarts
jqury
代码
<html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<!-- 引入 echarts.js -->
<script src="echarts.min.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: 'ECharts 入门示例'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
动态获取数据
方法一
通过ajax获取后端数据,通过调用 generateChart(data);方法传入data到option
function generateChart(data)
var option = {
tooltip: {
trigger: 'item'
},
legend: {
top: '5%',
left: 'center'
},
series: [
{
name: '访问来源',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: data
}
]
};
//使用刚指定的配置项和数据显示图表
myChart.setOption(option);
// }
//buttion调用的方法
function getData() {
var start = $('#start').val();
var end = $('#end').val();
//异步请求
$.post(
"url",//访问地址
{start: start, end: end},//携带的参数
function (data) {
generateChart(data);
},
"json"
);
}
方法二
var myChart = echarts.init(document.getElementById('main'));
//指定图表的配置项和数据
// myChart.clear();
function generateChart(){
// 异步加载数据
$.get('url').done(function (data) {
// 填入数据
console.log(data);
dataList = data.model.map(item=>{
return { value:item.taskCount , name:item.robotName}
});
myChart.setOption({
tooltip: {
trigger: 'item'
},
legend: {
top: '5%',
left: 'center'
},
series: [{
name: '巡检任务数',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: dataList
}]
});
});
}
案例展示
柱状图
注意
再写url时,如果涉及到跨域必须在contrller上面加注解@CrossOrigin,url前必须有协议http。。。
function generateChart() {
myChart.setOption({
title: {
text: '机器人巡检任务数'
},
tooltip: {},
legend: {
data:['数量']
},
xAxis: {
data: []
},
yAxis: {},
series: [{
name: '数量',
type: 'bar',
data: []
}]
});
$.get('url').done(function (data) {
// 填入数据
console.log(data);
var robotName =[]
data.model.forEach((item)=>{
robotName.push(item.robotName);
});
console.log(robotName);
var taskCount =[]
data.model.forEach((item)=>{
taskCount.push(item.taskCount);
});
console.log(taskCount);
myChart.setOption({
xAxis: {
type: 'category',
data: robotName
},
yAxis: {
type: 'value'
},
series: [{
name: '数量',
data: taskCount,
type: 'bar'
}]
});
});
}
饼图
function generateChart可以不写
var myChart = echarts.init(document.getElementById('main'));
function generateChart(){
// 异步加载数据
$.get('url').done(function (data) {
// 填入数据
console.log(data);
dataList = data.model.map(item=>{
return { value:item.taskCount , name:item.robotName}
});
myChart.setOption({
tooltip: {
trigger: 'item'
},
legend: {
top: '5%',
left: 'center'
},
series: [{
name: '巡检任务数',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: dataList
}]
});
});
}
折线图
注意:
- 循环获取数据时,数组不能越界
- 翻转二维数组的方法
<div id="main" style="width: 1500px;height:600px;">
</div>
<script type="text/javascript">
// 基于准备好的 dom,初始化 echarts 实例
var myChart = echarts.init(document.getElementById('main'));
// 异步加载数据
$.get('url').done(function (data) {
// 填入数据
//循环获取data中的数据,存到一个二维数组中
var datalist=[]
for(let i = 0;i<data.model.length;i++) {
var list=[]
data.model[i].forEach(item=>{
list.push(item.recordCount);
})
datalist.push(list);
}
console.log(datalist);
//把获取到的datalist沿左对角线翻转成为一个新的二维数组
var newArray = datalist[0].map(function (col, i) {
return datalist.map(function (row) {
return row[i];
})
});
console.log(newArray);
//日期list
var datelist=[]
for(let j = 0;j<data.model.length;j++) {
datelist.push(data.model[j][0].currentTime);
}
console.log(datelist)
var robotName =[]
data.model[0].forEach((item)=>{
robotName.push(item.robotName);
});
//封装一个series给option里
var series =[]
console.log(robotName)
for(let j = 0;j<robotName.length;j++) {
series.push(
{
name: robotName[j],
type: 'line',
stack: '总量',
data:newArray[j]
})
}
myChart.setOption({
title: {
text: '折线图堆叠'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: robotName
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: datelist
},
yAxis: {
type: 'value'
},
series: series
});
});
</script>