echarts入门到入土有时只需一篇博客

1.定义

echarts是基于javascript的图表插件(canvas)百度开发捐赠给apache基金会开源

2.echarts第一个案例:hellworld

引入js

<script src="./js/echarts.min.js"></script>

设置容器 宽高

<div id="app">
			
</div>

css样式

#app{
	width: 800px;
	height: 600px
}

初始化

var echart = echarts.init(document.getElementById('app'));

定义选项

var option = {
            title:{text:'小吴的睡眠时间'}, // 标题文本
			legend:{data:['睡眠时长','作业耗时','成绩']},  // 图例
			tooltip:{},  // 鼠标提示
			yAxis:{},  // y轴线
			xAxis:{data:['20日','21日','22日','23日','24日','25日','26日']},// x轴线
			series:[ // 系列数据
			{name:'睡眠时长',type:'bar',data:[8,5,4,7,3,12,14]}, // 数据
			{name:'作业耗时',type:'line',data:[1,2,4,3,5,1,0],smooth:true},
			{
			  name:'成绩',
			  type:'pie',
			  data:[
					{name:'html',value:90},
					{name:'js',value:80},
					{name:'nodejs',value:60},
					],
					radius:[100,60], //半径
					left:0,          //左偏移
					top:-200,        //顶部偏移
					}
			]
}

设置选项

	echart.setOption(option)

3.option选项

属性名意义
title标题
tooltip鼠标经过提示
xAxisx轴
yAxisy轴
series系列数据

option里面还有很多属性可以在官方网站查看 echart

4.颜色改变

1.主题

默认的主题有两种:light dark
也可以自己在官方网站中设置自定义样式

// 主题使用
var echart = echarts.init(document.getElementById('app'),'light);

2.color:[“#f30”] 调色盘

3.data:[15,{value:20,itemStyle:{}}]

4.itemStyle

itemStyle:{
		normal:{color:'#12f8e9'},  //正常状态
		emphasis:{color:'#00ffb3'}, // 强调状态
}

5.bar柱状图

柱状图的type属性是bar

{name:'睡眠时长',type:'bar',data:[8,5,4,7,3,12,14]}, // 数据

6.line折线图

折线图的type属性是line

{name:'作业耗时',type:'line',data:[1,2,4,3,5,1,0],smooth:true},

7.pie饼形图

饼形图的type属性是pie

{
name:'成绩',
type:'pie',
data:[
	{name:'html',value:90},
	{name:'js',value:80},
	{name:'nodejs',value:60},
],
	radius:[100,60], //半径
	left:0,          //左偏移
	top:-200,        //顶部偏移
}

8.stack堆叠

var option = {
	color:['#1cffce',' #2ef5ff'],
	title:{text:'郑州人口留存'},
	legend:{data:['新增','流失']},
	yAxis:{data:['2019','2020','2021']},
	xAxis:{},
	tooltip:{},
	series:[
			{name:'新增',data:[30,50,10],type:'bar',stack:true,
			label:{show:true,position:'insideRight',formatter:'{a}:{c}'},
			},
			{name:'流失',data:[30,20,100],type:'bar',stack:true,
			label:{show:true,position:'insideRight',formatter:'{a}:{c}'},
			},
	]
}

9.一图多表

var option = {
				color:['#1cffce',' #2ef5ff'],
				title:{text:'使用分布'},
				legend:{data:['手机使用时长','编码时间']},
				grid: [
				    { left: '7%', top: '7%',width:'50%',height: '38%' },
				    { left: '7%', bottom: '7%',width:'50%',height: '38%' },
				  ],
				yAxis:[
					{gridIndex:0,min:0,max:10},
					{gridIndex:1,min:0,max:10},
				],
				xAxis:[
					{data:['周一','周二','周三','周四','周五','周六','周日',],
					gridIndex:0
					},
					{data:['周一','周二','周三','周四','周五','周六','周日',],
					gridIndex:1
					},
				],
				tooltip:{
					
				},
				series:[
					{name:'手机使用时长',data:[3,2,4,3,2,5,10],type:'bar',
					xAxisIndex:0,
					yAxisIndex:0,
					type:'bar',
					itemStyle:{
						normal:{color:'#12f8e9'},  //正常状态
						emphasis:{color:'#00ffb3'}, // 强调状态
					}
					},
					{name:'编码时间',data:[10,5,6,4,7,4,1],type:'bar',
					xAxisIndex:0,
					yAxisIndex:0,
					type:'bar',
					itemStyle:{
						normal:{color:'#00ffb3'},  //正常状态
						emphasis:{color:'#12f8e9'}, // 强调状态
					}
					},
					{name:'编码时间',data:[10,5,6,4,7,4,1],type:'bar',
					xAxisIndex:1,
					yAxisIndex:1,
					type:'bar',
					itemStyle:{
						normal:{color:'#00ffb3'},  //正常状态
						emphasis:{color:'#12f8e9'}, // 强调状态
					}
					},
					{name:'手机使用时长',data:[3,2,4,3,2,5,10],type:'bar',
					xAxisIndex:1,
					yAxisIndex:1,
					type:'bar',
					itemStyle:{
						normal:{color:'#12f8e9'},  //正常状态
						emphasis:{color:'#00ffb3'}, // 强调状态
					}
					},
				]
			}

10.label

var option = {
				color:['#1cffce',' #5555ff'],
				title:{text:'网站访问来源',left:'center'},
				legend:{data:['百度','其他'],left:'right'},
				tooltip:{},
				series:[
					{type:'pie',name:'访问来源',
					radius:[200,130],
					data:[
						{name:'百度',value:1700,
						label:{
							show:true,
							position:'center',
							formatter:'{big|{d}}{small|%}\n{text|{b}}',
							rich:{
								big:{
									color:'#f70',
									fontWeight:700,
									fontSize:48,
								},
								small:{
									color:'#f70'
								},
								text:{
									color:"#00aaff",
									fontSize:20
								}
							}
						}
						},
						{name:'其他',value:400,label:{show:false}}
					]
					}
				]
			}

11.动态更新

var echart = echarts.init(document.getElementById('container'));
			var list = data.data.feiyan.beijingTrends.sort((a,b)=>a.day-b.day);
			var option = {
				title:{text:'2020北京新冠肺炎趋势'},
				legend:{data:['累计确诊']},
				xAxis:{data:list.slice(0,10).map(item=>String(item.day).slice(-4))},
				yAxis:{},
				series:[
					{name:'累计确诊',type:'bar',data:list.slice(0,10).map(item=>item.rest_sure_cnt)}
				]
			};
			
			echart.setOption(option)
			
			function auto(){
				var first = list.shift();
				list.push(first);
				option.xAxis.data = list.slice(0,10).map(item=>String(item.day).slice(-4));
				option.series[0].data = list.slice(0,10).map(item=>item.rest_sure_cnt);
				echart.setOption(option);
			}
			var id = null;
			id = setInterval(auto,1000);
			
			var box = document.getElementById('container');
			box.addEventListener('mouseover',function(){
				clearInterval(id)
			})
			box.addEventListener('mouseout',function(){
				id = setInterval(auto,1000);
			})

12.事件监听

echart.on(事件名,function(e){})
echart.off()

13.事件触发

echart.dispatchAction({})

type:"showTip"
seriesIndex:系列下标
dataIndex:数据下标

14.动画

var echart = echarts.init(document.getElementById('container'));
			var list = data.data.feiyan.beijingTrends.sort((a,b)=>a.day-b.day);
			var option = {
				title:{text:'2020北京新冠肺炎趋势'},
				legend:{data:['累计确诊']},
				toolbox: {
				    show: true,  // 显示工具箱
				    feature: {   // 特性
				      dataZoom: {  // 缩放x轴线
				        yAxisIndex: 'none'
				      },
				      dataView: { readOnly: false },  // 编辑数据
				      magicType: { type: ['line', 'bar'] },  // 魔法类型,线与柱状互转
				      restore: {},  // 重置
				      saveAsImage: {}  // 保存图片
				    }
				  },
				xAxis:{data:list.slice(0,10).map(item=>String(item.day).slice(-4))},
				yAxis:{},
				series:[
					{name:'累计确诊',type:'bar',data:list.slice(0,10).map(item=>item.rest_sure_cnt)}
				],
				animationEasing:'bounceInOut',
				
				animationDelay:function(idx){
					return idx *100;
				},
				animationDuration:function(idx){
					return idx*500
				}
			};
			
			echart.setOption(option)
			
			function auto(){
				var first = list.shift();
				list.push(first);
				option.xAxis.data = list.slice(0,10).map(item=>String(item.day).slice(-4));
				option.series[0].data = list.slice(0,10).map(item=>item.rest_sure_cnt);
				echart.setOption(option);
			}
			setTimeout(()=>{
				id = setInterval(auto,1000);
			},7000)
animationEasing:过渡动画
animationDelay:function(idx){return idx*100}  //动画延迟
animationDuration:function(idx){return idx*100} //动画时长

15.toolbox工具箱

toolbox: {
show: true, //显示工具箱
feature: { //特性
  dataZoom: { //缩放x轴线
	yAxisIndex: 'none'
  },
  dataView: { readOnly: false }, //编辑数据
  magicType: { type: ['line', 'bar'] }, //魔法类型,线与柱状互转
  restore: {}, //重置
  saveAsImage: {} //保存图片
}
},

16.地图

// 初始化
		 var echart = echarts.init(document.querySelector("#container"));
		 // 选项
		 var option = {
			 // 标题
			 title:{text:"中国地图"},
			 tooltip:{},
			 // 系统数据
			 series:[{
				 // 地图类型
				 type:"map",
				 // 数据
				 data:[
					 {name:"河南",value:"200",en:"henan"},
					 {name:"湖南",value:"180",en:"hunan"},
					 ]
				 
			 }]
		 };
		 
		 function getMap(obj={en:"china"}){
			 // h5的内置api  fetch 自学内容(ES6新增ajax内置方法)
			 fetch(`./js/map/json/province/${obj.en}.json`)
			 .then(res=>res.json())//把获取的数据转换为json  res.text()转换为文本
			 .then(res=>{
				 // 注册地图
				 echarts.registerMap(obj.en,res);
				 // 设置地图的类型
				 option.series[0].mapType = obj.en; 
				 // 更新选项
				 echart.setOption(option);
			 })
			 .catch(err=>console.error(err))
			 
		 }
		 getMap();
		 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值