echarts之事件交互

知识回顾:

鼠标事件的事件参数是事件对象的数据的各个属性,对于图表的点击事件,基本参数如下,其它图表诸如饼图可能会有部分附加参数。例如饼图会有percent属性表示百分比,具体见各个图表类型的 label formatter 回调函数的 params

交互事件说明:ECharts 中的事件分为两种,一种是鼠标事件,在鼠标点击某个图形上会触发,还有一种是 调用 dispatchAction 后触发的事件。

鼠标事件:

 'click''dblclick''mousedown''mousemove''mouseup''mouseover''mouseout''globalout''contextmenu'

具体详见官网文件:https://echarts.apache.org/zh/api.html#events

dataZoom设置:

主要实现代码(step1):

dataZoom: [{
                    // yAxisIndex: 'none'
                    type:'inside',
                    show:true,
                    start:20,
                    end:70,
                },
            ],

主要实现代码(step2):

        //zoom实现
        myChart1.on('dataZoom',function(params){
            console.log(params);
            var startValue=myChart1.getModel().option.dataZoom[0].startValue;
            var endValue=myChart1.getModel().option.dataZoom[0].endValue;
            //初始化 
            var startValue=myChart1.getModel().option.dataZoom.start;
            var startValue=myChart1.getModel().option.dataZoom.start;
            console.log(startValue,endValue,startPercent,endPercent);
            option1.dataZoom[0].start = startPercent;
            option1.dataZoom[0].end = endPercent;
            myChart1.setOption(option1);

        });

全部代码实现:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<script type="text/javascript" src="js/echarts.min.js" ></script>
        <script src="js/jquery-3.3.1.js"></script>
        <script src="js/macarons.js"></script>
        <script src="js/infographic.js"></script>
        <script src="js/essos.js"></script>
		<title>专升本数据</title>
		
	</head>
	<body>
        <div id="themeArea"><label>主题切换</label></div>
        <div>
            <select name="nivcai" id="stle">
                <option value="macarons">macarons</option>
                <option value="infographic">infographic</option>
                <option value="essos">essos</option>
                
            </select>
        </div>
	<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main1" style="width: 1000px;height:400px;"></div>
    <div id="main2" style="width: 800px;height:500px;"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart1 = echarts.init(document.getElementById('main1'));
        var option1 ={
            title:{  //标题组件
                text:'专升本数据',
                subtext:'来自公众号'
            },
            toolbox: {
                show: true,
                feature: {
                dataView: { readOnly: false },
                magicType: { type: ['line', 'bar'] },
                restore: {},
                saveAsImage: {}
                }
            },
            tooltip:{trigger:'axis'},
            legend:{
                data:['2019专升本数据','2020专升本数据','2021专升本数据']
            },
            dataZoom: [{
                    // yAxisIndex: 'none'
                    type:'inside',
                    show:true,
                    start:20,
                    end:70,
                },
            ],
		    xAxis: {
		        type: 'category',
		        data: ['汉口学院', '武汉商学院', '湖北大学', '湖北理工学院', '江汉大学', '长江大学','湖北医药学院','湖北工程学院',]
		    },
		    yAxis: {
		        type: 'value'
		    },

		    series: [
                {
                    name :'2019专升本数据',
                    data:[50,91,42,63,33,25,65,94],
                    type:'bar'
                },
                {
                    name :'2020专升本数据',
                    data:[47,53,66,42,39,27,62,52],
                    type:'bar'
                },
                {
                    name :'2021专升本数据',
                    data:[55,95,46,33,23,53,59,64],
                    type:'bar'
                },
            ]
		};

        var myChart2 = echarts.init(document.getElementById("main2"));
        var option2 ={
            tooltip: {
    trigger: 'item',
    formatter: '{a} <br/>{b}: {c} ({d}%)'
  },
  legend: {
    data: [
      '汉口学院',
      '武汉商学院',
      '湖北大学',
      '湖北理工学院',
      '江汉大学',
      '长江大学',
      '湖北医药学院',
      '湖北工程学院',
    ]
  },
  series: [
    {
      name: '专升本数据',
      type: 'pie',
      selectedMode: 'single',
      radius: [0, '35%'],
      label: {
        position: 'inner',
        fontSize: 14
      },
      labelLine: {
        show: false
      },
      data: [
        { value: 668, name: '云计算技术' },
        { value: 635, name: '大数据技术' },
        { value: 369, name: '计算机应用技术', selected: true }
      ]
    },
    {
      name: '专升本数据',
      type: 'pie',
      radius: ['45%', '65%'],
      labelLine: {
        length: 30
      },
      label: {
        formatter: '{b|{b}:}{c}  {per|{d}%}  ',
        backgroundColor: '#F6F8FC',
        borderColor: '#8C8D8E',
        borderWidth: 1,
        borderRadius: 4,
        rich: {
          a: {
            color: '#6E7079',
            lineHeight: 22,
            align: 'center'
          },
          hr: {
            borderColor: '#8C8D8E',
            width: '100%',
            borderWidth: 1,
            height: 0
          },
          b: {
            color: '#4C5058',
            fontSize: 14,
            fontWeight: 'bold',
            lineHeight: 33
          },
          per: {
            color: '#fff',
            backgroundColor: '#4C5058',
            padding: [3, 4],
            borderRadius: 4
          }
        }
      },
      data: [

        { value: 308, name: '汉口学院' },
        { value: 235, name: '湖北工程学院' },
        { value: 210, name: '武汉商学院' },
        { value: 251,name: '湖北医药学院' },
        { value: 34, name: '湖北大学' },
        { value: 147, name: '移速' },
        { value: 35, name: '江汉大学' },
        { value: 52, name: '长江大学' }
      ]
    }
  ]
        }
 
 
        // 使用刚指定的配置项和数据显示图表。
        myChart1.setOption(option1);
        myChart2.setOption(option2);

        //zoom实现
        myChart1.on('dataZoom',function(params){
            console.log(params);
            var startValue=myChart1.getModel().option.dataZoom[0].startValue;
            var endValue=myChart1.getModel().option.dataZoom[0].endValue;
            //初始化 
            var startValue=myChart1.getModel().option.dataZoom.start;
            var startValue=myChart1.getModel().option.dataZoom.start;
            console.log(startValue,endValue,startPercent,endPercent);
            option1.dataZoom[0].start = startPercent;
            option1.dataZoom[0].end = endPercent;
            myChart1.setOption(option1);

        });

        $('#stle').change(function(){
            myChart1.dispose();
            let yourtheme =$(this).val();
            myChart1=echarts.init(document.getElementById('main1'),yourtheme);
            myChart1.setOption(option1);
            myChart1.resize();
        });


        // 鼠标点击触发
        myChart1.on('click',function(params){
            var yt = alert("鼠标点击事件,你刚才点击了:"+params.name);
 
           window.alert("将为你打开一个新窗口,搜索关键词"+params.name);
           window.open('https://www.baidu.com/s?wd='+encodeURIComponent(params.name));
        });
        window.addEventListener("resize",function(){
            myChart1.resize();
        });


        myChart2.on('click',function(params){
            var yt = alert("鼠标点击事件,你刚才点击了:"+params.name);
 
           window.alert("将为你打开一个新窗口,搜索关键词"+params.name);
           window.open('https://www.baidu.com/s?wd='+encodeURIComponent(params.name));
        });
        window.addEventListener("resize",function(){
            myChart2.resize();
        });


    </script>
</body>
</html>

 

 实现效果展示:

 主要实现了数据区域缩放事件,大家可以尝试其他的事件,看完官网就快速上手一下吧!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值