ECharts 报表事件联动系列一:刷新页面

本示例实现了以下功能:

1.点击刷新按钮,仅刷新柱状图,而不是整个页面

2.点击柱状内容刷新柱状图,并更新title

3.点击X轴,Y轴更新title,并弹出alert。

源码代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>ECharts</title>
    <!-- <script src="http://echarts.baidu.com/dist/echarts.min.js"></script>  -->
    <script src="https://cdn.bootcss.com/echarts/4.0.2/echarts.js"></script>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    您选择了X轴的标签[<span id="xAxisTag"></span>],他的值为[<span id="barValue"></span>]
    <input type="submit" name="" value="刷新" onclick="refresh()">
    <div id="main" style="width: 600px;height:400px;"></div>
    
</body>
<script type="text/javascript">
  function getSeriesData(){

      //根据js方法本身的加载顺序,此方法需要定义在myChart前面
      //此处可以通过后台生成数据,这样后台就无需返回整个option,只需要返回动态的数据部分即可
      // $.ajax({
      //     type: 'GET',
      //     url: "getSeriesData",
      //     cache: false,
      //     async : false,
      //     dataType: 'json',
      //     success: function (result) {
      //         seriesdata = result;
      //     },
      //     error: function (result, XMLHttpRequest, textStatus, errorThrown) {
      //         // 状态码
      //         // console.log(XMLHttpRequest.status);
      //         // console.log(XMLHttpRequest.toLocaleString());
      //         // 状态
      //         // console.log(XMLHttpRequest.readyState);
      //         // 错误信息
      //         // console.log(textStatus);
      //     }
      // });

        var n1 = Math.floor(Math.random()*50+1);
        var n2 = Math.floor(Math.random()*50+1);
        var n3 = Math.floor(Math.random()*50+1);
        var n4 = Math.floor(Math.random()*50+1);
        var n5 = Math.floor(Math.random()*50+1);
        var n6 = Math.floor(Math.random()*50+1);
        seriesdata = [n1, n2, n3, n4, n5, n6];

      return seriesdata;
  }  

  function getxAxisData(){
    //同样适用以ajax的方式从后台获取数据
    xAxisData = ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"];
    return xAxisData;
  }

  function getSaleOption(){
      saleOption = {
            title: {
                text: 'ECharts 入门示例'
            },
            tooltip: {},
            legend: {
                data:['销量']
            },
            xAxis: {
                // data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"],
                data : getxAxisData(),
                triggerEvent:true,
                axisTick: {
                    alignWithLabel: true //坐标值是否在刻度中间
                }
                
            },
            yAxis: {triggerEvent:true},
            series: {
                name: '销量',
                type: 'bar',
                //data: [n1, n2, n3, n4, n5, n6],
                // data : seriesdata,
                data : getSeriesData(),
                itemStyle: {  
                    normal: {  
                        color: function(params) {
                      var colorList = ['#2eddc1','#FCCE10','#E87C25','#277bbb','#E87fff','#277aaa'];
                            //若返回的list长度不足,不足部分自动显示为最后一个颜色
                        return colorList[params.dataIndex]
                      },
                        label: {  
                            show: true,  
                            position: 'top'
                        }  
                    }  
                }
            }
        };

        return saleOption;
  }
  

</script>
<script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));
        
        // 指定图表的配置项和数据
        var option = getSaleOption();
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);

        myChart.on('click', function (params) { 
            //param具体包含的参数见 https://blog.csdn.net/allenjay11/article/details/76033232
            updatePage(params);
          
            if (params.componentType == "series"){
                refresh();
            }
        });
    </script>

<script type="text/javascript">
  function updatePage(params){
    //点击内容区域
    if (params.componentType == "series"){    
        tag = option.xAxis.data[params.dataIndex];
        value = params.value;
        var xAxisTag = $("#xAxisTag");  
        xAxisTag.html(tag);
        var barValue = $("#barValue");  
        barValue.html(value);
    }
    
    //点击X轴
    if (params.componentType == "xAxis"){
        tag = params.value;
        value = "";
        var xAxisTag = $("#xAxisTag");  
        xAxisTag.html(tag);
        var barValue = $("#barValue");  
        barValue.html(value);
        alert("单击了"+params.value+",X轴标签");  
    }
    //点击Y轴
    if (params.componentType == "yAxis"){
        tag = null;
        value = params.value;
        var xAxisTag = $("#xAxisTag");  
        xAxisTag.html(tag);
        var barValue = $("#barValue");  
        barValue.html(value);
        alert("单击了"+params.value+",Y轴标签");
    }
    
  };

  function refresh(){             
      
      //局部刷新series内容
      //此处没有用常用的刷新div等方法,而是直接改变了option的值,然后重新赋值给myChart
     
      //简化方法,调用getSeriesData更新数据。
      option.series.data = getSeriesData();
      
      myChart.setOption(option);
  };     
  
</script>
</html>

显示效果如下:

 

转载于:https://www.cnblogs.com/huanghongbo/p/9059987.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ECharts 是一个基于 JavaScript 的开源可视化库,可以用于创建各种图表,包括折线图、柱状图、饼图等。在 ECharts 中实现多图联动可以通过以下步骤完成: 1. 创建多个图表实例: 在页面中创建多个 ECharts 图表实例,可以通过不同的 div 元素来容纳不同的图表。 2. 绑定事件: 在需要联动的图表上绑定事件,例如鼠标移动事件点击事件。可以使用 ECharts 提供的 on 方法来绑定事件。 3. 获取数据: 在事件回调函数中,获取当前图表的相关数据。可以使用 ECharts 提供的 getOption 方法来获取图表的选项配置。 4. 更新其他图表: 在事件回调函数中,根据当前图表的数据更新其他需要联动的图表。可以使用 ECharts 提供的 setOption 方法来更新图表的选项配置。 下面是一个简单的示例代码,展示了如何实现两个折线图的联动: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts 多图联动示例</title> <script src="https://cdn.jsdelivr.net/npm/echarts@5.1.0/dist/echarts.min.js"></script> </head> <body> <div id="chart1" style="width: 600px; height: 400px;"></div> <div id="chart2" style="width: 600px; height: 400px;"></div> <script> var chart1 = echarts.init(document.getElementById('chart1')); var chart2 = echarts.init(document.getElementById('chart2')); // 假设有两组数据,data1 和 data2 // 绘制图表1 var option1 = { xAxis: {}, yAxis: {}, series: [{ type: 'line', data: data1 }] }; chart1.setOption(option1); // 绘制图表2 var option2 = { xAxis: {}, yAxis: {}, series: [{ type: 'line', data: data2 }] }; chart2.setOption(option2); // 绑定事件 chart1.on('mousemove', function(params) { // 获取当前图表的数据 var data = params.data; // 更新图表2的数据 option2.series[0].data = data; chart2.setOption(option2); }); chart2.on('mousemove', function(params) { // 获取当前图表的数据 var data = params.data; // 更新图表1的数据 option1.series[0].data = data; chart1.setOption(option1); }); </script> </body> </html> ``` 在上述示例中,我们创建了两个折线图的实例 `chart1` 和 `chart2`,并分别绘制了两组数据。通过绑定 `mousemove` 事件,当鼠标在其中一个图表上移动时,会获取当前图表的数据,并更新另一个图表的数据,从而实现了两个图表的联动效果。 注意:上述示例仅为演示多图联动的基本思路,实际应用中可能需要根据具体需求进行适当调整和扩展。同时,ECharts 还提供了更多丰富的功能和配置选项,可以根据实际需要进行使用和定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值