使用Echarts 动态更新散点图

简介: 使用Echarts 动态更新散点图

最近遇到一个作业,要求使用 Echarts 散点图,本来这个图是很容易的,官网上也有很多的教程。但是如果可以动态的更新 Echarts 散点图就更好了。我本身对 js 不感兴趣,经过不停的查找资料最终实现了这一功能。

  我的项目是 Servlet + jsp + Echarts。先从 Servlet 入手,我们的项目需要传递的数值是 x 坐标和 y 坐标。我首先写了一个 JavaBean

查看前端面试题小程序 大量面试题和答案,请微信

查看

julie.java

package JavaBean;
public class julei {
    public julei(double x, double y) {
        this.x = x;
        this.y = y;
    }
    double x;
public double getX() {
    return x;
}
public void setX(double x) {
    this.x = x;
}
public double getY() {
    return y;
}
public void setY(double y) {
    this.y = y;
}
double y;
@Override
public String toString() {
    return "[" + this.x + "," + this.y + "]";
}

}

Servlet中的代码,因为使用的是 json 来传递的数据,所以 json 相关的包还是少不了的。

BackServlet
package Servlet;
import JavaBean.Readtxt;
import JavaBean.julei;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@javax.servlet.annotation.WebServlet("/BackServlet")
public class BackServlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
List<julei> list = new ArrayList<>();
    try {
        list = Readtxt.out();//这是我们项目中的一个类,不重要。
    }catch (Exception e)
    {
        System.out.println(e.toString());
    }
    JSONArray jsonArray = new JSONArray(list);
    System.out.println(jsonArray.toString());
    //最重要的就是这一句,将数据发送给谁来申请的位置
    response.getWriter().write(jsonArray.toString());
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
}

}

好了,现在到了最重要的前端方面了。

index.jsp

正常声明散点图,只要把data声明为空就好。

var myChart = echarts.init(document.getElementById('man'));
          var option = {
            title : {
              text: '死亡分布图',
            },
            xAxis: {axisTick: {//决定是否显示坐标刻度
                alignWithLabel: true,
                show:true
              },},
            yAxis: {},
            series: [{
              symbolSize: 20,
              data: [],
              type: 'scatter'
            }]
          };
          myChart.setOption(option);

数据接收部分:

var num = [];

var gao = new Array();

$.ajax({

type : “post”,

async : true, //异步请求(同步请求将会锁住浏览器,其他操作须等请求完成才可执行)

url : “BackServlet”, //请求发送到TestServlet

data : {},

dataType : “json”, //返回数据形式为json

//7.请求成功后接收数据name+num两组数据
        success : function(result) {
          //result为服务器返回的json对象
          if (result) {
            //8.取出数据存入数组
            for (var i = 0; i < result.length; i++) {
              gao.push([result[i].x,result[i].y]);//这一句很重要,它将数据转化为了正确的格式。
            }
            myChart.hideLoading(); //隐藏加载动画
            //9.覆盖操作-根据数据加载数据图表
            myChart.setOption({
              series : [ {
                // 根据名字对应到相应的数据
                data : gao//在这里对data进行赋值。
              } ]
            });
          }
        },
        error : function(errorMsg) {
          //请求失败时执行该函数
          alert("图表请求数据失败!");
          myChart.hideLoading();
        }
      })

我把整个jsp都放上来了,但是里面的 css 还有 js 就不放了,重点是传数据的那一部分。

<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8”%>

<div class="section">
  <div class="ly-box01">
    <img class="ly-img01" src="img/logol.png" style="width:100%;height:100%">
  </div>
</div>
<!--第三屏-->
<div class="section">
  <div class="timeline"></div>
  <div class="timepoint21"></div>
  <div class="ly-box11">
    <div id="man" style=" width: 600px;height: 500px;"></div>
    <script type="text/javascript">
      // 基于准备好的dom,初始化echarts实例
      var value=[];
      $.ajaxSettings.async=false;
      var myChart = echarts.init(document.getElementById('man'));
      var option = {
        title : {
          text: '死亡分布图',
        },
        xAxis: {axisTick: {//决定是否显示坐标刻度
            alignWithLabel: true,
            show:true
          },},
        yAxis: {},
        series: [{
          symbolSize: 20,
          data: [],
          type: 'scatter'
        }]
      };
      myChart.setOption(option);
      var num = [];
      var gao = new Array(4);
      $.ajax({
        type : "post",
        async : true, //异步请求(同步请求将会锁住浏览器,其他操作须等请求完成才可执行)
        url : "BackServlet", //请求发送到TestServlet
        data : {},
        dataType : "json", //返回数据形式为json
        //7.请求成功后接收数据name+num两组数据
        success : function(result) {
          //result为服务器返回的json对象
          if (result) {
            //8.取出数据存入数组
            for (var i = 0; i < result.length; i++) {
              gao.push([result[i].x,result[i].y]);
            }
        //  document.write(gao);
            myChart.hideLoading(); //隐藏加载动画
            //9.覆盖操作-根据数据加载数据图表
            myChart.setOption({
              series : [ {
                // 根据名字对应到相应的数据
                data : gao
              } ]
            });
          }
        },
        error : function(errorMsg) {
          //请求失败时执行该函数
          alert("图表请求数据失败!");
          myChart.hideLoading();
        }
      })
       </script>
      </div>
      <div class="ly-triangle21"></div>
    </div>
  <!--试验-->
  <ul class="bg-bubbles">
    <li><img src="img/logol.png" style="width:100%;height:100%"></li>
    <li><img src="img/logol.png" style="width:100%;height:100%"></li>
    <li><img src="img/logol.png" style="width:100%;height:100%"></li>
    <li><img src="img/logol.png" style="width:100%;height:100%"></li>
    <li><img src="img/logol.png" style="width:100%;height:100%"></li>
    <li><img src="img/logol.png" style="width:100%;height:100%"></li>
    <li><img src="img/logol.png" style="width:100%;height:100%"></li>
    <li><img src="img/logol.png" style="width:100%;height:100%"></li>
    <li><img src="img/logol.png" style="width:100%;height:100%"></li>
    <li><img src="img/logol.png" style="width:100%;height:100%"></li>
  </ul>
</div>
<audio src="music/1.mp3" autoplay="autoplay" loop="loop" />
<script src="js/jquery-1.8.3.min.js"></script>
<script src="js/jquery.fullPage.min.js"></script>
<script src="js/diy.js"></script>
</body>
</html>

小程序查看

红旗头像制作

相关文章
|
8月前
|
前端开发
【前端图表】echarts散点图鼠标划过散点显示信息
【前端图表】echarts散点图鼠标划过散点显示信息
75 0
|
12月前
|
定位技术
Echarts实战案例代码(16):geomap地图散点图和label轮播的解决方案
Echarts实战案例代码(16):geomap地图散点图和label轮播的解决方案
172 0
|
12月前
|
JavaScript 数据可视化 定位技术
漏刻有时数据可视化Echarts组件开发(24):本地离线的地图下钻与散点图
漏刻有时数据可视化Echarts组件开发(24):本地离线的地图下钻与散点图
100 0
漏刻有时数据可视化Echarts组件开发(24):本地离线的地图下钻与散点图
|
12月前
|
JavaScript 数据格式 容器
echarts图表-饼图、柱状图、折线图、散点图之间相互切换
echarts图表-饼图、柱状图、折线图、散点图之间相互切换
262 0
|
8月前
ECharts散点图大小调整
ECharts散点图大小调整
124 0
|
8月前
|
前端开发
【前端图表】echarts实现散点图x轴时间轴
【前端图表】echarts实现散点图x轴时间轴
75 0
|
12月前
|
数据可视化 定位技术 数据格式
漏刻有时数据可视化Echarts组件开发(25):引导线labelLine和散点图scatter的开发
漏刻有时数据可视化Echarts组件开发(25):引导线labelLine和散点图scatter的开发
72 0
漏刻有时数据可视化Echarts组件开发(25):引导线labelLine和散点图scatter的开发
|
12月前
|
定位技术
29-Vue之ECharts-散点图
29-Vue之ECharts-散点图
|
12月前
|
JSON JavaScript 数据可视化
漏刻有时Echarts地图三级下钻和散点图使用说明
漏刻有时Echarts地图三级下钻和散点图使用说明
158 0
|
12月前
|
数据可视化
数据可视化演示效果:Echarts动态更新(官方标准)
数据可视化演示效果:Echarts动态更新(官方标准)
88 0