文档章节

基于TuShare和ECharts实现数据可视化

openthings
 openthings
发布于 2017/02/17 17:49
字数 1124
阅读 2990
收藏 2

基于TuShare和ECharts实现数据可视化

 

1、ECharts介绍

ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器,底层依赖轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。

ECharts 3 中更是加入了更多丰富的交互功能以及更多的可视化效果,并且对移动端做了深度的优化。

ECharts的成名,得益于几年前百度人口迁徙大数据效果的展示,当年看到那个基于地图连线忽闪忽闪的效果,简直了,太高大上了。最近一年在北京偶尔拜访一些所谓的大数据公司,进门显眼位置看见的那些大屏幕数据展示,估计很多都是基于ECharts开发的。

2、与Python的结合

ECharts主要是应用在web和app领域,跟Python应用的结合,目前在Django,Flask等web框架里更为常见。今天要介绍的,也是在IPython Notebook里基于web的效果展示,而在IPython qtconsole等环境下似乎无能为力。

实际上,在IPython Notebook里使用ECharts相比纯web开发环境,要复杂麻烦一些。但是在IPython Notebook里作为除matplotlib以外的数据可视化方案,ECharts或许可以成为一个强有力候补。尤其是在基于国内地图、关系图、桑基图等方面的数据展示上,ECharts完全可以担当大任,游刃有余。

3、实现原理

在IPython Notebook里,有一个display的模块,可以实现HTML效果的展示。而最核心的条件是notebook自带一个JS模块,可以通过RequireJS动态导入js脚本并执行。

我们先来看看HTML代码在IPython notebook里简单的实现效果:

通过RequireJS,引入ECharts包

然后配置echarts熟悉和数据

4、图表效果实例

这里只给大家展示K线图、折线图和饼图的效果,只揭示实现原理和过程,具体的代码优化和图表功能的完善,可以自行研究ECharts的相关资料来改进。

要实现这三类图表,这里借用股票日线行情数据、前十大股东持股占比数据和前十大流通股东持股比例来举例。(请将tushare升级到最新版。)

A、K线图效果

通过tushare的get_k_data获取日线前复权数据,这里通过中国联通来演示。根据上文的实现原理,我们运行代码后可以看到如下效果。

B、折线图效果

演示的折线图效果实际是我选用了关系图进行了改造,常规的折线图大家可以参考ECharts官网的代码。

这里我用到了tusahre的新数据接口“十大流通股东”数据来做演示,数据包括了前十大股东和十大流通股东历年各季度的持股数量和占比。折线图我用前十大股东历年持股占比情况来演示。

根据线图实现的代码,运行后,效果如下:

C、饼图效果

饼图用到了前十大流通股数据,选用浦发银行2016年第三季度的数据作为示例。

对前十大流通股东数据安装ECharts数据格式进行处理,代码大致如下:

完整执行后,可以看到最终效果图。

 

5、总结

ECharts实际可以大大丰富Python的图表和展示效果。但是要想用好,需要对ECharts的用法有所了解,特别是要实现自定义的图表的时候,更要对底层代码进行研究。

这里有三个应用方面的小技巧分享一下:

1、选定图表后,在ECharts的官网里进行代码修改和效果调试,直到满意。(如果有条件,这一步可以交给前端工程师)。

2、根据已经完成的代码模板,将数据部分在IPython notebook里用经过了pandas和Python数据清洗处理后的数据进行替换。

3、如果在IPython notebook里无法出现图表效果,检查数据结构是否正确。可以将代码和数据重新拷贝到ECharts的调试器里进行检查。

* 源代码:https://my.oschina.net/u/2306127/blog/841047

 

本文转载自:http://www.wtoutiao.com/p/554YOSW.html

共有 人打赏支持
openthings
粉丝 279
博文 1031
码字总数 561308
作品 1
东城
架构师
私信 提问

暂无文章

idea 删除代码的注释

搜索栏使用 正则表达式搜索 (/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/|[ \t]*//.*) 会搜索出来所有注释的代码 用空格replace替换掉就可以了。 或者搜索 (/\*([^*]|[\r\n]|(\*+([^*/]|[\r\...

时刻在奔跑
4分钟前
0
0
eclipse maven 项目运行mvn clean 后无法运行

错误: 错误:找不到或无法加载主类com.yyy.test.Main 解决方法: “project” --"Clean" 参考链接:https://jingyan.baidu.com/article/cbcede07107d9802f40b4dff.html...

qimh
9分钟前
0
0
崛起于Springboot2.X之集成工作流Activiti5.22(42)

声明:该博客主要是Springboot1.X和Springboot2.X集成Activiti5.22版本,并说一下两个版本的搭建不同的地方 技术:Springboot2.0.3+mysql+jpa(自动生成25张表)+Activiti5.22 /然后Springboo...

木九天
19分钟前
2
1
windows环境下搭建rabbitMQ开发环境

windows环境下搭建rabbitMQ开发环境 下载与安装 erlang rabbitmq 是使用erlang语言开发的,所以需要erlang环境; 下载地址 rabbitmq 下载地址 rabbitmq与erlang版本关系 下载之后直接安装即可...

晨猫
30分钟前
1
0
JVM 中的守护线程

特点 通常由JVM启动 运行在后台处理任务,比如垃圾回收等 用户启动线程执行结束或者JVM结束时,会等待所有的非守护线程执行结束,但是不会因为守护线程的存在而影响关闭。 判断线程是否为守护...

小刀爱编程
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部