Echarts 后台交互(折线图)

30 篇文章 0 订阅

jsp页面

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  3. <html>  
  4. <head>  
  5. <title>line</title>  
  6. <script type="text/javascript" src="${pageContext.request.contextPath}/js/echarts2.0/esl.js"></script>  
  7. <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.8.3.js"></script>  
  8. </head>  
  9.   
  10. <body>  
  11.     <!-- 为ECharts准备一个具备大小(宽高)的Dom -->  
  12.         <div id="main" style="height:400px"></div>  
  13.   
  14.   
  15.     <script type="text/javascript" language="javascript">  
  16.         var myChart;  
  17.         var eCharts;  
  18.   
  19.         require.config({  
  20.             paths : {  
  21.                 'echarts' : '${pageContext.request.contextPath}/js/echarts2.0/echarts' ,  
  22.                 'echarts/chart/line' : '${pageContext.request.contextPath}/js/echarts2.0/echarts' //需要的组件  
  23.             }  
  24.         });  
  25.   
  26.         require(  
  27.             [ 'echarts',   
  28.               'echarts/chart/line'  
  29.             ], DrawEChart //异步加载的回调函数绘制图表  
  30.         );  
  31.   
  32.         //创建ECharts图表方法  
  33.         function DrawEChart(ec) {  
  34.             eCharts = ec;  
  35.             myChart = eCharts.init(document.getElementById('main'));  
  36.             myChart.showLoading({  
  37.                 text : "图表数据正在努力加载..."  
  38.             });  
  39.             //定义图表options  
  40.             var options = {  
  41.                 title : {  
  42.                     text : "未来一周气温变化",  
  43.                     subtext : "纯属虚构",  
  44.                     sublink : "http://www.baidu.com"  
  45.                 },  
  46.                 tooltip : {  
  47.                     trigger : 'axis'  
  48.                 },  
  49.                 legend : {  
  50.                     data : [ "最高气温" ]  
  51.                 },  
  52.                 toolbox : {  
  53.                     show : true,  
  54.                     feature : {  
  55.                         mark : {  
  56.                             show : true  
  57.                         },  
  58.                         dataView : {  
  59.                             show : true,  
  60.                             readOnly : false  
  61.                         },  
  62.                         magicType : {  
  63.                             show : true,  
  64.                             type : [ 'line', 'bar' ]  
  65.                         },  
  66.                         restore : {  
  67.                             show : true  
  68.                         },  
  69.                         saveAsImage : {  
  70.                             show : true  
  71.                         }  
  72.                     }  
  73.                 },  
  74.                 calculable : true,  
  75.                 xAxis : [ {  
  76.                     type : 'category',  
  77.                     boundaryGap : false,  
  78.                     data : [ '1', '2', '3', '4', '5', '6', '7' ]  
  79.                 } ],  
  80.                 yAxis : [ {  
  81.                     type : 'value',  
  82.                     axisLabel : {  
  83.                         formatter : '{value} °C'  
  84.                     },  
  85.                     splitArea : {  
  86.                         show : true  
  87.                     }  
  88.                 } ],  
  89.                 grid : {  
  90.                     width : '90%'  
  91.                 },  
  92.                 series : [ {  
  93.                     name : '最高气温',  
  94.                     type : 'line',  
  95.                     data : [ 11, 22, 33, 44, 55, 33, 44 ],//必须是Integer类型的,String计算平均值会出错  
  96.                     markPoint : {  
  97.                         data : [ {  
  98.                             type : 'max',  
  99.                             name : '最大值'  
  100.                         }, {  
  101.                             type : 'min',  
  102.                             name : '最小值'  
  103.                         } ]  
  104.                     },  
  105.                     markLine : {  
  106.                         data : [ {  
  107.                             type : 'average',  
  108.                             name : '平均值'  
  109.                         } ]  
  110.                     }  
  111.                 } ]  
  112.             };  
  113.             myChart.setOption(options); //先把可选项注入myChart中  
  114.             myChart.hideLoading();  
  115.             getChartData();//aja后台交互   
  116.         }  
  117.     </script>  
  118.   
  119.   
  120.     <script type="text/javascript">  
  121.         function getChartData() {  
  122.             //获得图表的options对象  
  123.             var options = myChart.getOption();  
  124.             //通过Ajax获取数据  
  125.             $.ajax({  
  126.                 type : "post",  
  127.                 async : false, //同步执行  
  128.                 url : "${pageContext.request.contextPath}/echarts/line_data",  
  129.                 data : {},  
  130.                 dataType : "json", //返回数据形式为json  
  131.                 success : function(result) {  
  132.                     if (result) {  
  133.                         options.legend.data = result.legend;  
  134.                         options.xAxis[0].data = result.category;  
  135.                         options.series[0].data = result.series[0].data;  
  136.   
  137.                         myChart.hideLoading();  
  138.                         myChart.setOption(options);  
  139.                     }  
  140.                 },  
  141.                 error : function(errorMsg) {  
  142.                     alert("不好意思,大爷,图表请求数据失败啦!");  
  143.                     myChart.hideLoading();  
  144.                 }  
  145.             });  
  146.         }  
  147.     </script>  
  148. </body>  
  149. </html>  


controller


[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.ffcs.wlan.controller;  
  2. import java.util.ArrayList;  
  3. import java.util.Arrays;  
  4. import java.util.List;  
  5. import org.slf4j.Logger;  
  6. import org.slf4j.LoggerFactory;  
  7. import org.springframework.stereotype.Controller;  
  8. import org.springframework.web.bind.annotation.RequestMapping;  
  9. import org.springframework.web.bind.annotation.ResponseBody;  
  10. import com.ffcs.wlan.model.EchartData;  
  11. import com.ffcs.wlan.model.Series;  
  12.   
  13. @Controller  
  14. @RequestMapping("/echarts")  
  15. public class EntityController {  
  16.       
  17.     private static final Logger logger = LoggerFactory.getLogger(EntityController.class);  
  18.   
  19.     @RequestMapping("/line_data")  
  20.     @ResponseBody  
  21.     public EchartData lineData() {  
  22.         logger.info("lineData....");  
  23.           
  24.         List<String> legend = new ArrayList<String>(Arrays.asList(new String[]{"最高气温"}));//数据分组  
  25.         List<String> category = new ArrayList<String>(Arrays.asList(new String []{"周一","周二","周三","周四","周五","周六","周日"}));//横坐标  
  26.         List<Series> series = new ArrayList<Series>();//纵坐标  
  27.           
  28.         series.add(new Series("最高气温""line",   
  29.                         new ArrayList<Integer>(Arrays.asList(  
  30.                                 21,23,28,26,21,33,44))));  
  31.           
  32.         EchartData data=new EchartData(legend, category, series);  
  33.         return data;  
  34.     }  
  35.       
  36.     @RequestMapping("/line_page")  
  37.     public String linePage() {  
  38.         logger.info("linePage....");  
  39.         return "report/line";  
  40.     }  
  41.       
  42.       
  43. }  

Echarts 类


[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.ffcs.wlan.model;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. public class EchartData {  
  7.   
  8.     public List<String> legend = new ArrayList<String>();//数据分组  
  9.     public List<String> category = new ArrayList<String>();//横坐标  
  10.     public List<Series> series = new ArrayList<Series>();//纵坐标  
  11.       
  12.       
  13.     public EchartData(List<String> legendList, List<String> categoryList, List<Series> seriesList) {  
  14.         super();  
  15.         this.legend = legendList;  
  16.         this.category = categoryList;  
  17.         this.series = seriesList;  
  18.     }  
  19.       
  20. }  

Series 类


[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.ffcs.wlan.model;  
  2.   
  3. import java.util.List;  
  4.   
  5.   
  6. public class Series  {  
  7.       
  8.     public String name;  
  9.       
  10.     public String type;  
  11.       
  12.     public List<Integer> data;//这里要用int 不能用String 不然前台显示不正常(特别是在做数学运算的时候)  
  13.   
  14.     public Series( String name, String type, List<Integer> data) {  
  15.         super();  
  16.         this.name = name;  
  17.         this.type = type;  
  18.         this.data = data;  
  19.     }  
  20.   
  21.   
  22. }
     
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 动态时间折线图是一种基于Echarts库的数据可视化方式,可以通过动态展示数据随时间变化的趋势。该图表可以用于展示一段时间内某一指标的变化情况,帮助用户更直观地理解数据的变化趋势。 在Echarts中,可以通过配置项和数据项来实现动态时间折线图的展示。首先,需要设置x轴为时间轴,即以时间为单位对数据进行刻度分割。其次,在y轴设置对应的指标单位,如数量、比例等。然后,在数据项中,需要设置不同时间点对应的数据值,这样就可以动态展示数据随时间变化的折线。 在具体实现上,可以通过定时器控制每个时间点的插入和移除,从而实现数据随时间动态变化的效果。当每个时间点插入时,折线图将会根据最新的数据重新绘制;而上一个时间点的数据则会移除,使得折线图保持实时的动态效果。 此外,还可以通过添加动画效果来增加交互性和吸引力。比如,可以设置曲线平滑过渡、折线延伸效果等,使得图表更加生动。 总的来说,动态时间折线图是一种功能强大、直观易懂的数据可视化方式。通过展示数据随时间的变化趋势,可以帮助用户更全面地了解数据的演变过程,从而更好地进行数据分析和决策。 ### 回答2: echarts是一款强大的数据可视化工具,它支持生成各种类型的图表,包括折线图。而动态时间折线图则是echarts中的一个特殊类型的折线图,它可以展示随时间变化的数据。 动态时间折线图的实现需要借助于echarts中的动态更新数据的功能。首先,我们需要准备好要展示的数据集。这些数据包括时间和对应的数值。我们可以通过一个数组或者从后台获取动态数据。然后,我们使用echarts提供的setOption方法将数据传入到图表中。 在实现动态效果时,我们需要使用定时器来更新数据。可以通过JavaScript中的setInterval方法来设置一个定时器,然后在每次定时器触发时更新数据,再将更新后的数据传入图表中。在更新数据时,echarts会自动刷新图表,并展示出新的动态效果。 除了动态更新数据,echarts还提供了许多其他的功能,可以使动态时间折线图更加丰富和个性化。例如,我们可以设置折线的样式、颜色和大小,以及添加数据点和tooltip信息等。 总之,echarts动态时间折线图是一种非常实用和直观的数据展示方式。通过使用echarts提供的功能,我们可以轻松地生成并更新动态时间折线图,从而更好地展示和分析随时间变化的数据。无论是在数据分析、商业决策还是学术研究等领域,echarts动态时间折线图都能发挥重要作用。 ### 回答3: ECharts是一款强大的数据可视化工具,可以用来绘制各种图表,包括折线图。动态时间折线图是一种基于时间轴的折线图,用于展示数据随时间的变化趋势。 要创建一个动态时间折线图,首先需要准备好要展示的数据集。数据集中应包含时间和对应的数据值。接下来,可以使用ECharts的Options配置项来定义图表的样式和行为。 首先创建一个基本的折线图,并配置x轴为时间类型。然后通过设置自动刷新或者手动刷新机制,实现动态更新数据和时间轴的效果。这可以通过调用ECharts提供的setOption方法,并传入新的数据来实现。 为了使动态变化更加明显,可以使用动画效果或者设置合适的刷新频率来更新数据。例如,可以使用setInterval函数每隔一段时间执行一次数据更新操作,然后再调用setOption方法更新图表。这样就可以在图表上看到数据的动态变化了。 此外,ECharts还提供了许多其他的功能,可以根据需求来进行配置和扩展。比如,可以通过配置tooltip来显示具体的数据信息,通过配置legend来显示不同数据系列的标识,以及通过配置toolbox来增加交互功能等等。 总之,ECharts动态时间折线图可以帮助我们更直观地展示数据随时间变化的趋势。通过合适的配置和数据更新机制,可以实现动态的效果,让数据的变化更加生动和易于理解。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值