从上图可以看到,信息是能被抽象化为图形展示的,也就是基本的图表,曲线(想想股票那种曲线,普及一下那个叫K线图,想起当初去北京面试炒股公司的时候了...),柱状图等.

而apache开源的echats正是这样的一种插件.

使用简单:

https://github.com/apache/incubator-echarts 找到开源库,找到中文官网,(百度代理)

下载这个js或者使用其提供的cdn

导入一套关于id为mian的script语句:

<!--test ECharts-->
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main')); // 指定图表的配置项和数据
var option = {
title: {
text: 'ECharts 入门示例'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
}; // 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>

成了!

那么接下来就是要把这些数据转换为动态可调整的.

从上面js可以看到数据是json格式,也就是通过查询数据库返回来的数据以json返回即可以.

通过Java语言(SpringBoot框架)返回则可以通过@RestController或@ResponseBody直接返回这样的json格式.

> now 下面通过一个简单的demo实现这一想法.

1. 首先我们找一个曲线图,不用上面那个柱状图了. (后期需要曲线图呈现动态展示)

https://www.echartsjs.com/examples/editor.html?c=dynamic-data2 <动态曲线demo

function randomData() {              --很显然这是开始方法了
now = new Date(+now + oneDay); --声明了时间
value = value + Math.random() * 21 - 10; --随机值
return {
name: now.toString(),
value: [
[now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/'),
Math.round(value) --Math.round为四舍五入(value值)
] --看到这里这个方法是返回一个随机数据,包含着时间和随机值
}
} var data = []; --一个数组声明
var now = +new Date(1997, 9, 3); --还是时间
var oneDay = 24 * 3600 * 1000; --声明了一天的时间(毫秒)
var value = Math.random() * 1000; --随机值
for (var i = 0; i < 1000; i++) { --data数组中放入这个随机data
data.push(randomData());
} option = {
title: {
text: '动态数据 + 时间坐标轴'
},
tooltip: {
trigger: 'axis',
formatter: function (params) {
params = params[0];
var date = new Date(params.name);
return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' : ' + params.value[1];
},
axisPointer: {
animation: false
}
},
xAxis: { --x轴
type: 'time',
splitLine: {
show: false
}
},
yAxis: { --y轴
type: 'value',
boundaryGap: [0, '100%'],
splitLine: {
show: false
}
},
series: [{
name: '模拟数据',
type: 'line',
showSymbol: false,
hoverAnimation: false,
data: data
}]
}; setInterval(function () { --设置轮询方法,用shift()方法获取展示并删掉第一个已经展示的,继而继续push新的随机数据 for (var i = 0; i < 5; i++) {
data.shift();
data.push(randomData());
} myChart.setOption({
series: [{
data: data
}]
});
}, 1000);

通过官方demo已经可以测通,

但这些Random的数据看着有些紊乱,让我们从数据库里实时调出一些数据来吧

for (var i = 0; i < 1000; i++) {
data.push(randomData());
}

上面的for循环中,i<1000,可以进行调整,如果调整为5,则时间将不再相差那么大,而改为每1天每1天紧挨着展示,同样调整为10则中间隔一天展示

setInterval(function () {

    // for (var i = 0; i < 5; i++) {
// data.shift();
// data.push(randomData());
// }

注释掉轮询中的for循环,将不再有新的数据push进来(页面静态了)

而下面这种,则数据一直会向左挤压.不会被shift掉:

 for (var i = 0; i < 5; i++) {
// data.shift();
data.push(randomData());
}

下面的:

xAxis: {
type: 'time',
splitLine: {
show: true
}
},
yAxis: {
type: 'value',
boundaryGap: [0, '100%'],
splitLine: {
show: true
}
}

为显示x轴和y轴的坐标比对线是否显示.默认false不显示. 显示样式如下:

前同事发来一些echart的demo,说白了还是html

那意思估计就是这不是有echarts,common.min.js嘛?自己搜百度也能解决啊.

下午将主要的easyui加入进后端页面,login页面,与shiro的路径进行设置

之后再结合erp的项目将代码转移过来, 之后(不着急的)把activti加入进来,做为一个可以供公司审批的一个后台页面使用

这几天做的都记录到了印象笔记合项目readme.md中了.

至于echart,要在easyui和shiro之后,通过测试数据返回json使用

这里有个朋友也是了解过echarts

只不过还是没有我需要的,我需要的是能不能在echarts这js代码中使用类似ajax从服务器获取这些数据进行展示呢.

带着这个疑问我掀开了IDEA,建立了一个有数字的新表: (用来进行测试)

新表建立好了,但是需要进行数据插入,使用easyui进行增删改.

但是在easyui配合thymeleaf配合shiro时,需要进行一些调整.

错误的thymeleaf标签?

    <tr th:each="u:${us}">
<td th:text="${u.id}"></td>
<td th:text="${u.name}"></td>
<td th:text="${fn.substring(u.password,0,5)}..."></td>
<td th:text="${fn.substring(u.salt,0,5)}..."></td>
<td th:each="r:${user_roles[u]}">
${r.name}
</td>
<td th:text="<a href='/admin/editUser?id='${u.id}>编辑</a>"></td>
<td th:text="<a href='/admin/deleteUser?id='${u.id}>删除</a>"></td>
</tr>

基于对thymeleaf的不支持 (IDEA)

以及要尽早实现效果(easyUI+echarts)

这里取消使用thymeleaf.

页面的配置基本先easyui

后台使用erp+test1进行整合.

(index):207 Uncaught TypeError: Cannot read property 'length' of undefined

在获取json数据时需要分字段获取.这时的js方法内抛出错误.

获取json数组中的某一个字段出错.

获得新方法 Object.keys(json).length 一般json数据需要获取长度单纯使用length不可以.

/*获取json数据中的某一个字段*/
function getParamValues(name,json){
var ret = [];
var len = Object.keys(json).length; for (var i = 0; i < len; i++) {
ret.push(json[i][name]);
}
return ret;
}

原因是这里: (被注释的是错误的)

// petroleumCokesJson = JSON.stringify(data);
petroleumCokesJson = data.petroleumCokes;

修正之后正常:

[echats] - EChats图表的使用的更多相关文章

  1. 关于在bootstrap的tab栏中渲染echats图表,切换tab时echats不显示问题

    在开发过程中遇到这样个问题: 利用bootstrap中的tab栏,每当点击tab栏的导航时,echats仅仅只渲染第一个tab的内容,切换tab时,echats图表不显示. 其html代码为: < ...

  2. EChats+Ajax之柱状图的数据交互

    原文链接:https://blog.csdn.net/qq_37936542/article/details/79723710 一:下载 echarts.min.js 选择完整版进行下载,精简版和常用 ...

  3. echats 油表盘 鼠标拖动指针改变数值

    近期需要做一个鼠标拖动完成油表盘数值改变的功能,使用canvas感觉太麻烦,而且指针不太好监听和拖动,只能另谋出路,在网上参考了某位大神的操作,最终选择了echats来解决这个问题.废话不多说,直接上 ...

  4. echats问题

    echats 横轴显示不下datazoom配置,加入滚动条 实例博客  https://blog.csdn.net/Zheng_xiao_xin/article/details/80882113 常用 ...

  5. vue怎么引入echats并使用 (柱状图 字符云)

    安装 npm install echarts --save 下面看一下如何简单的使用: 在main.js中引入(全局引入) // 引入echarts import echarts from 'echa ...

  6. Echats

    网址:https://www.echartsjs.com 1.特性 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(I ...

  7. echats 的使用

    第一步在我们的电脑上百度搜索echarts,点击进去,如下图所示: 2 第二步进去之后,点击下载,选择要下载的echarts版本,一般选择源代码,如下图所示: 3 第三步下载完成之后,我们也可以来使用 ...

  8. 如何添加使用echats地图悬浮显示内容

    /初始化绘制全国地图配置 var option = { backgroundColor: '#000', title: { text: 'Echarts3 中国地图农村金融', subtext: '三 ...

  9. 【echats】echats悬浮事件频繁触发、过于灵敏、快速抖动等异常现象,适用与tooltip有关

    方案:transitionDuration设为0: 如图,发现关闭tooltip后现象消失,猜测与tooltip有关. 经过仔细观察,鼠标在快速移动时tooltip会延迟移动,就是这个时间差,让鼠标悬 ...

随机推荐

  1. 【Python】xpath中为什么粘贴进去代码后老报错?如何在定位元素的时候准确找到定位切入点?

    1. xpath后()中双引号("")里面不能套用双引号(""),把里面的双引号改成单引号('')报错就没有了. 2.如何在定位元素的时候准确找到定位切入点? ...

  2. android activity and fragment活动周期

    1.状态 /* 每个活动一共有四种状态 *:1.运行状态,就是栈顶的那个 * 2.暂停状态:就是不处于栈顶,但是依然可见,比如对话框下面的界面 * 3.停止状态:不处于栈顶,并且不可见 * 4.销毁状 ...

  3. Python3学习之路~2.1 列表、元组操作

    列表 列表是我们以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作. 定义列表(list) names=['Amy','Bob','Cindy','David'] 通过下标访问列 ...

  4. 深度学习之TensorFlow(一)——基本使用

    一.目前主流的深度学习框架Caffe, TensorFlow, MXNet, Torch, Theano比较 库名称 开发语言 速度 灵活性 文档 适合模型 平台 上手难易 Caffe c++/cud ...

  5. jQuery内部原理和实现方式浅析

    这篇文章主要介绍了jQuery内部原理和实现方式浅析,本文试图从整体来阐述一下jQuery的内部实现,需要的朋友可以参考下 这段时间在学习研究jQuery源码,受益于jQuery日益发展强大,研究jQ ...

  6. keepalived+mysql 高可用集群

    mysql 为主主模式参考 https://my.oschina.net/sanmuyan/blog/877373 192.168.100.129 mysql 主节点/keepalived 主节点 1 ...

  7. 【转】SVM入门(一)SVM的八股简介

    (一)SVM的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够 ...

  8. iOS 新浪微博-1.0框架搭建

    项目搭建 1.新建一个微博的项目,去掉屏幕旋转 2.设置屏幕方向-->只有竖向 3.使用代码构建UI,不使用storyboard 4.配置图标AppIcon和LaunchImage 将微博资料的 ...

  9. EF5.0区别于EF4.0的增删改写法

    // 实现对数据库的添加功能,添加实现EF框架的引用 public T AddEntity(T entity) { //EF4.0的写法 添加实体 //db.CreateObjectSet<T& ...

  10. 一个新人对HTML内JavaScript的理解

    首先是对于JavaScript(以后简称JS)的定义: ① JS他是一个脚本语言,有点类似于外部插件,需要插入引用才会有效 ② 他需要一个宿主文件,就是他插入到谁里面进行运算,谁就是这个JS的宿主文件 ...