ECharts使用指南

简介:

 ECharts是百度开发的一个国内比较常用的网页图表工具,也算是它旗下不可多得的优秀工具之一。如果你看过其它的js图表工具就可以知道这玩意的强大之处了,相比其它xxChart,ECharts提供了基本上最完善的图表类型模板,api接口和配置项,其次,它用起来比较方便,现成的模板非常易于使用,如果不需要一些高级特性,那么只需要一点前端知识就能完成数据的可视化。

参考:

html及javascript
如果你完全不了解html和javascript的相关内容,有那么一些网站可以参考:
W3Cschool
廖雪峰的官网
这些或许并不是最好的参考,但可以作为方便的随时在手边的教程来使用。

那就开始吧:

第一步,引入ECharts:

 echars的引入十分简单,只需要在html中嵌入即可:

<!DOCTYPE html>
<html>
<head>
    <script src="echarts.min.js"></script>
</head>
</html>

echarts.min.js从官网下载
此时echarts.min.js保存在html文件同目录下
如果不想在本地保存echart.js文件,可以采用cdn引入:

<script src="echarts.min.js"></script>

改为

<script src="https://cdn.bootcss.com/echarts/4.1.0.rc2/echarts.min.js"></script>

之后就可以开始进入echarts的世界了

第二步,生成echarts对象:

 要创建图表首先要给图表一个安置的空间,所以可以在body内嵌入一个空的<div>标签,赋值一个id,以用来存放图表对象,当然如果有多个图表那可以创建多个标签。参考官方的初始化方法,使用echarts.init(node)创建echarts对象,完整代码如下:

<!DOCTYPE html>
<html>
<head>
    <script src="echarts.min.js"></script>
</head>
<body>
    <div id="container" style="height: 100%"></div>
<script>
    var dom = document.getElementById("container");
    var myChart = echarts.init(dom);
</script>
</body>
</html>

这个myChart就是重点关注对象,之后的几乎所有图表方法都跟这玩意有关。

第三步,设置配置项

 echarts的需要通过一个option对象来进行配置,详细配置项见官网说明文档
 以折线图为例,option的形式类似于这样:

折线图

option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line'
    }]
};

其中series是数据系列,可以有多个,在这个折线图中只设置了一个
至于xAxis和yAxis是echarts提供的折线图配置项,要知道所有的可设置项可查看官方文档

第四步,载入option:

 如果要载入option,只需要调用setOption()就好了

myChart.setOption(option, true);

其中第二个参数为[notMerge],当设置为false时,如果更新数据将会合并新旧数据

最后上一个完整版:
<!DOCTYPE html>
<html style="height: 100%">
   <head>
       <meta charset="utf-8">
   </head>
   <body style="height: 100%; margin: 0">
       <div id="container" style="height: 100%"></div>
       <script type="text/javascript" src="echarts.min.js"></script>
var dom = document.getElementById("container");
var myChart = echarts.init(dom);
option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line'
    }]
};
myChart.setOption(option, true);

       </script>
   </body>
</html>


 

常用的option配置项和对象方法
常用的mychart对象方法
myChart.showLoading(LoadingOption);
myChart.hideLoading();

添加showLoading()到加载数据之前可以显示一个Loading的界面,防止加载时间过长,hideLoading()清除加载页面

mychart.getOption();

获取option对象的克隆版本

mychart.dispose()
mychart.clear();

前者为释放图表,释放后不可在使用
后者为清空图表内容,清空后可再添加内容
 

常用的配置项
图例
legend: [{
            data: categories.map(function (a) {
                return a.name;
            }),
            selected: {
                '系列1': true,
                // 不选中'系列2'
                '系列2': false
            }
        }],

因为原始数据不一定符合要求,所以data数据常常使用map和回调函数返回一个字符串数组

缩放
    dataZoom: [
        { // 第一个 dataZoom 组件
            radiusAxisIndex: [0, 2] // 表示这个 dataZoom 组件控制 第一个 和 第三个 radiusAxis
        }]

dataZoom控制数据的缩放

以及最重要的
    series:[{...},{...}]

series中包含了大量已有图表类型的配置项,具体内容参考配置项文档

 

异步加载数据

模板中常用的异步加载数据类型有json和图表类型用的gexf,有关gexf格式的详情可以看这里

为了方便起见,异步加载数据首先导入Jquery

<script type="text/javascript" src="jquery.js"></script>

加载gexf文件要先加载echarts的dataTool库

<script type="text/javascript" src="dataTool.min.js"></script>
$.get('data.gexf',function(xml){
    var graph = echarts.dataTool.gexf.parse(xml);//通过dataTool解析gexf
}),

其中graph对象带有gexf中的节点信息


graph

于是调用起来就非常方便了:
对于关系图,我们可以这样

series : [
            {
                name: 'graph',
                type: 'graph',
                layout: 'none',
                data: graph.nodes,
                links: graph.links
            }

加载json文件同理:

$.get('data.json',function(data){
    data.nodes;//节点
    data.links; //边
})
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生_x阅读 15,967评论 3 119
  • 经济制造的风向标,淘宝拍卖 信息全流通的年代就是,随时随地的可以知道各种渠道信息。而且可以从价格上看出各种问题。美...
    瑾渝阅读 119评论 0 0
  • [成为配得上希望的那个人2017.05.15留言] 今天的话题,其实是怎样遇到贵人的升级版,怎样呵护希望。道理是一...
    早知今日阅读 324评论 0 1
  • 大半夜睡不着,自制暑假攻略一则,以此消遣时光。 一、暑假必做——旅行。和男票商量好了,暑假去银川影视基地,完成上一...
    亲爱的自己呀阅读 405评论 0 0
  • 行之_cd阅读 128评论 0 0