对echarts的简单封装
看了echarts的官网介绍:http://echarts.baidu.com/doc/example.html
看了网上人使用js对echarts的封装:http://blog.csdn.net/xuemoyao/article/details/22602837
这篇文章虽然很好,但是感觉不是我的菜,过于复杂了。
所以献丑也写一下,哈
先来做一下分析,echarts提供了很多种类型的图表,被分为几个大类,每个大类中有若干种,可以通过对series做一些简单的调整来互相转化。注意,由于时间关系我并没有分析全部的echarts图表数据结构,而且echarts也在一直更新,所以观点可能比较片面。
如标准折线图添加这句话就变成面积图
itemStyle: {normal: {areaStyle: {type: 'default'}}}
好吧,都是对图表数据显示样式的修改。
然后来分析一下图表需要的数据格式
1、折线图,柱状图格式
data:[220, 182, 191, 234, 290, 330, 310]
2、饼图、漏斗图、仪表格式
data:[
{value:335, name:'直接访问'},
{value:310, name:'邮件营销'},
{value:234, name:'联盟广告'},
{value:135, name:'视频广告'},
{value:1548, name:'搜索引擎'}
]
上面是我需要用到的一些图的数据格式,根据我的理解,可以统一使用{key:value}这种形式保存数据,在数据传入时判断图表类型在格式化成需要的样子。另外,考虑到在一个表中显示多个数据序列(如折线图),所以需要给数据加一个名称作为图例,最终数据格式为:
{
name:'淘宝周销售数据',
data:{‘周一’:1,‘周二’:5,‘周三’:4,‘周四’:3,‘周五’:9,‘周六’:6,‘周日’:2,}
}
最后经过一天的思考和设计,结果如下:
ECHelper.prototype.Line = function(data){
//分析数据获取x轴,暂时以第一个数据的所有key做x轴
var xAxis = (function(dd){
var array;
for(var kk in dd){//取对象第一个属性
array = dd[kk].data;
break;
}
var xaxis = [];
for(var k in array){
xaxis.push(k);
}
return xaxis;
})(data);
//获取图例和数据
var legend = [];
var dds = [];
for(var k in data){
legend.push(data[k].name);
dds.push({name:data[k].name,type:'line',data:this.formatData(data[k].data,'array')})
}
//模板对象
var opt = {
legend: {
data:legend
},
tooltip : {
trigger: 'axis'
},
xAxis : [
{
type : 'category',
data : xAxis
}
],
yAxis : [
{
type : 'value'
}
],
series : dds
};
return opt;
};
该函数的输入对象格式为:
{
'uid@start@end':{name,data}
}
基本上已经足够满足要求了。上面的方法结构已经很清晰,但是博客园不提供代码收起功能,所以看起来模块直接很混乱,没办法。封装效果如下:

对echarts的简单封装的更多相关文章
- Echarts 的 Java 封装类库 转自 https://my.oschina.net/flags/blog/316920
转自: https://my.oschina.net/flags/blog/316920 Echarts 的 Java 封装类库:http://www.oschina.net/p/echarts-ja ...
- echarts的简单应用之(二)饼图
接上一篇文章: echarts的简单应用之(一)柱形图:https://www.cnblogs.com/jylee/p/9359363.html 本篇文章讲述饼图,撇过折线图不说,是因为折线图与柱形图 ...
- Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池
前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...
- FMDB简单封装和使用
工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...
- Android--Retrofit+RxJava的简单封装(三)
1,继续接着上一篇的讲讲,话说如果像上一篇这样的话,那么我们每一次请求一个结构都要创建一堆的Retrofit对象,而且代码都是相同的,我们可以试试封装一下 先创建一个HttpMethods类,将Ret ...
- okhttp3 get post 简单封装
最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...
- python网页请求urllib2模块简单封装代码
这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...
- 对pymysql的简单封装
#coding=utf-8 #!/usr/bin/python import pymysql class MYSQL: """ 对pymysql的简单封装 "& ...
- iOS开发——UI篇OC篇&UITableView简单封装
UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...
随机推荐
- 用jquery写了个选项卡,当作一个笔记吧。
<!DOCTYPE HTML> <html lang="en"> <head> <meta http-equiv="Conten ...
- 初学Javascript对象
<script> var p=new Object(); //属性 p.width=; p.height=; p.num=; p.autotime=; //方法 p.autoplay=fu ...
- 使用Ajax.ActionLink时,点击对应的按钮会重新加载一个页面,而不是在当前页面的指定模块加载
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 原生网络请求:同步请求、异步请求、GET请求、POST请求
1.同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作, 2.异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然 ...
- Ratchet(WebSockets for PHP)的官方TUTORIALS 的实践
前几天稍微看了一下Ratchet,并且实践了一下它官方例子.所以现在就将实践的过程记录下来. 在具体实践之前先将Ratchet是什么东东,要先说明一下.以下的英文是从官方copy过来的 Ratchet ...
- 对WM_NCHITTEST消息的了解+代码实例进行演示(消息产生消息,共24个枚举值)
这个消息比较实用也很关键,它代表非显示区域命中测试.这个消息优先于所有其他的显示区域和非显示区域鼠标消息.其中lParam参数含有鼠标位置的x和y屏幕坐标,wParam 这里没有用. Windows应 ...
- Java实现KMP算法
/** * Java实现KMP算法 * * 思想:每当一趟匹配过程中出现字符比较不等,不需要回溯i指针, * 而是利用已经得到的“部分匹配”的结果将模式向右“滑动”尽可能远 * 的一段 ...
- ubuntu下QT输出程序控制台界面难看的解决方法
这几天在ubuntu下装了QT5,但输出程序界面后,简直无法入目 于是,随便乱找后,终于找到解决方法 打开选项 在终端那行改下就行
- F - Truck History - poj 1789
有一个汽车公司有很多年的汽车制造历史,所以他们会有很多的车型,现在有一些历史学者来研究他们的历史,发现他们的汽车编号很有意思都是有7个小写字母组成的,而且这些小写字母具有一些特别的意义,比如说一个汽车 ...
- Selenium 初见
Selenium名字的来源 在这里,我还想说一下关于Selenium名字的来源,很有意思的: >:Selenium的中文名为“硒”,是一种化学元素的名字,它对汞 (Mercury)有天然的解毒作 ...