echarts动态加载折线图数据demo

文章来源 http://www.vxzsk.com/180.html

前面几节echarts的使用都是静态常量值得设置,这肯定不能满足我们在日常开发中的需要,平时项目的数据都是动态的,可变的,所以本章节介绍echarts结合Java 如何动态的加载数据。

=================方式一============

1,新建servelet类EchartsDemo.java和页面echartsDemo2.jsp。

EchartsDemo.java是一个普通的servelet,在这里仅仅是举例,读者可更换为一个spring的controller或者struts的action。

EchartsDemo.java 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package  com.test;
/*****
  * V型知识库
  * www.vxzsk.com
 
  */
import  java.io.IOException;
import  javax.servlet.ServletException;
import  javax.servlet.http.HttpServlet;
import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;
 
public  class  EchartsDemo  extends  HttpServlet {
 
     private  static  final  long  serialVersionUID = 1L;
 
     /**
      * Constructor of the object.
      */
     public  EchartsDemo() {
         super ();
     }
 
     /**
      * Destruction of the servlet. <br>
      */
     public  void  destroy() {
         super .destroy();  // Just puts "destroy" string in log
         // Put your code here
     }
 
     public  void  doGet(HttpServletRequest request, HttpServletResponse response)
             throws  ServletException, IOException {
 
         this .doPost(request, response);
     }
 
     /*****
      * V型知识库
      * www.vxzsk.com
     
      */
     public  void  doPost(HttpServletRequest request, HttpServletResponse response)
             throws  ServletException, IOException {
         String title= "'我是折线图'" ; //标题
         String legend = "['邮件营销a','联盟广告','视频广告','直接访问','搜索引擎']" ; //折线图线条
         String xAxis= "['周一','周二','周三','周四','周五','周六','周日']" ; //x轴
         String series= "["
         + "{"
              + "name:'邮件营销a',"
              + "type:'line',"
              + "stack: '总量',"
              + "data:[120, 132, 101, 134, 90, 230, 210]"
        + "},"
        + "{"
              + "name:'联盟广告',"
              + "type:'line',"
              + "stack: '总量',"
              + "data:[220, 182, 191, 234, 290, 330, 310]"
        + "},"
        + "{"
              + "name:'视频广告',"
              + "type:'line',"
              + "stack: '总量',"
              + "data:[150, 232, 201, 154, 190, 330, 410]"
         + "},"
          + "{"
              + "name:'直接访问',"
              + "type:'line',"
              + "stack: '总量',"
              + "data:[320, 332, 301, 334, 390, 330, 320]"
        + "},"
          + "{"
              + "name:'搜索引擎',"
              + "type:'line',"
              + "stack: '总量',"
              + "data:[820, 932, 901, 934, 1290, 1330, 1320]"
       + "}"
      + "]" ;
         
         request.setAttribute( "title" , title);
         request.setAttribute( "legend" , legend);
         request.setAttribute( "xAxis" , xAxis);
         request.setAttribute( "series" , series);
         request.getRequestDispatcher( "/baidu/echartsDemo2.jsp" ).forward(request, response);
         
     }
 
     public  void  init()  throws  ServletException {
         // Put your code here
     }
 
}

说明:doPost方法中设置了四个参数,并且四个参数按照echarts的格式设置了常量值,赋值数据读者可根据自己需求自行组装,但是组装的格式一定要符合上述代码案例,赋值数据可来自于数据库,xml文件,接口调用等。

echartsDemo2.jsp 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<%@ page language="java" contentType="text/html; charset=utf-8"
     pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
< meta  http-equiv = "Content-Type"  content = "text/html; charset=utf-8" >
< title ></ title >
</ head >
< body  >
        < div  id = "container"  style = "height: 500px" ></ div >
        < div  style = "display: " >
        
        </ div >
        <!-- V型知识库 www.vxzsk.com -->
        
        < script  type = "text/javascript"  src = "http://echarts.baidu.com/gallery/vendors/echarts/echarts-all-3.js" ></ script >
       
        < script  type = "text/javascript" >
var dom = document.getElementById("container");
var myChart = echarts.init(dom);
var app = {};
var option = null;
var title=${title};
var legend=${legend};
var xAxis =${xAxis};
var series=${series};
 
option = {
     title: {
         text: title
     },
     tooltip: {
         trigger: 'axis'
     },
     legend: {
         data:legend
     },
     grid: {
         left: '3%',
         right: '4%',
         bottom: '3%',
         containLabel: true
     },
     toolbox: {
         feature: {
             saveAsImage: {}
         }
     },
     xAxis: {
         type: 'category',
         boundaryGap: false,
         data:  xAxis
     },
     yAxis: {
         type: 'value'
     },
     series:  series
};
 
if (option && typeof option === "object") {
     myChart.setOption(option, true);
}
        </ script >
    </ body >
</ html >

js代码接收servelet中四个动态参数,然后把动态变量赋值到相应位置

1
2
3
4
var  title=${title};
var  legend=${legend};
var  xAxis =${xAxis};
var  series=${series};

2,运行代码,效果如下

我们在servelet中 设置的title值为"我是折线图" ,请注意下图标题





还看到一种方式,作为参考

==================方式二===================

注意:1、用Ajax请求获取后台数据 2、Echarts只能处理Json数据

后台Controller:根据业务需求不同而返回不同数据,我前台要循环遍历Echarts的series进行数据添加,所以后台返了个二维数组过去。

5

前端JSP页面:为Echarts准备一个具有高宽的dom容器

jsp

前端JS:初始化时即加载Echarts,将不需要进行加载的配置项(例如title、tooltip等)不作改动,将需要动态加载数据的配置放入ajax的success:function(){}中进行处理。

js1

定义一个为series这个即将动态加入数据的配置项准备的名为Item的数组容器,

接着对后台返回过来的数据(childkind)进行遍历,将遍历出的数据赋给容器中的相应属性(例:tp.name=childkind[i])。由于series里面的data属性(接收的是数组数据)也需要进行数据动态加载,接着再定义一个list数组,循环写入数据到list中,再将list数组返给tp.data。

最后再设置Echarst相关配置项。

js2



  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Echarts是一个基于JavaScript的开源可视化库,动态排序折线图Echarts中一种常见的图表类型。动态排序折线图可以根据数据的变化自动调整折线的顺序,使得折线图更加直观和易于分析。 在使用Echarts实现动态排序折线图时,我们需要首先准备好要展示的数据。这些数据可以是实时的,也可以是根据一定的时间间隔更新的,例如每小时、每天或每周等。数据可以通过后端接口获取,也可以直接在前端设置。 接下来,我们需要创建一个Echarts实例,并设置好折线图的基本配置。这些配置包括图表类型、标题、坐标轴、图例等。在配置中,我们需要将动态排序功能设置为开启状态。 然后,我们可以通过定时器或其他方式,定期刷新折线图数据。在每次刷新时,Echarts会根据最新的数据重新排序折线的显示顺序。这样,即使数据发生变化,我们也可以清晰地看到主要趋势,并快速分析和比较各个折线的走势。 除了动态排序,Echarts还提供了丰富的交互、样式定义和数据处理功能,可以进一步优化和美化折线图的展示效果。我们可以根据具体需求添加数据标签、渐变色等特效,以及设置动画效果等。 总的来说,Echarts动态排序折线图能够帮助我们直观地展示数据的变化趋势,并提供快速的数据分析能力。通过合理的配置和数据更新策略,我们可以灵活地应用动态排序折线图在各种场景中,提升数据可视化的效果和用户体验。 ### 回答2: Echarts动态排序折线图是一种通过实时数据动态更新排序的可视化图表。它能够将数据以折线的形式展示出来,并根据数据的变化动态调整折线的排序顺序。 使用Echarts动态排序折线图时,我们需要先准备好数据源,并将其按照时间顺序进行排序。然后,我们可以使用Echarts提供的API来实现动态排序的效果。 首先,在Echarts的配置项中,我们需要设置x轴为时间轴,y轴为数据轴。然后,使用series属性来定义折线的样式、颜色等信息。 接下来,我们需要使用定时器来定时更新数据,并重新绘制图表。在每次更新数据时,我们可以根据数据的变化重新对数据进行排序,并更新折线图的显示效果。 在数据更新时,可使用Echarts提供的setOption方法来修改图表的配置项。通过传递新的数据和排序方式,我们可以实现折线图动态排序效果。 总的来说,Echarts动态排序折线图可以将实时变化的数据动态排序的方式呈现出来,有助于我们更好地观察和分析数据的变化趋势。它可以找出数据中的峰值、谷值等特点,并根据数据的变化实时更新排序,使数据更加直观易懂。通过使用Echarts动态排序折线图,我们可以更好地理解和展示数据动态变化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值