echarts

254 阅读1分钟

echarts简单入门

静态数据展示

创建html文件

image.png

引入相关依赖

echarts
image.png
jqury
image.png

代码

<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。。。

image.png

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可以不写

image.png

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
					                }]
						});
					});
				}

折线图

注意:

  1. 循环获取数据时,数组不能越界
  2. 翻转二维数组的方法 image.png
<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>