基于Python的交互式可视化工具 [转]

前几天发现一个可视化工具Dash,当看到它的交互式效果后突然就觉得眼前一亮。早就想写出来分享给大家,今天利用睡前一点时间发出来,希望能给有需要的朋友带来一点帮助或者多一个参考。

 

python + Dash 可以快速开发web应用,至少可以快速开发web原型!!!

 

 

awesome dash and plotly:

https://github.com/ucg8j/awesome-dash

 

 

 

Dash介绍

在Python语言环境里,有不少可视化解决方案,以前的公众号文章曾经介绍过几个。这些工具很适合利用静态数据来展示图形效果,如果要在数据基础之上增加交互功能,就需要额外增加不少代码。要么实现起来比较复杂,要么很难实现实时交互。

 

有了Dash以后,这个问题就好解决了。

 

Dash是利用Flask、plotly.js和React.js构建起来的自定义可视化开源框架。   plotly(可视化神器)画出的每个对象都能直接当成参数传入。

 

大概在2017年6月,Dash被正式发布为开源库,用于构建交互式可视化网页。类似echarts和highcharts,基本上都是基于js来实现图形效果。但是!Dash是基于Python运行,这就可以跟pandas和Numpy,甚至人工智能的包无缝对接。

 

有人又要说了,D3、echarts和highcharts在Flask下也可以结合使用啊。是的,但是Dash为你做了很多整合的工作,代码量要少很多,甚至你不要懂太多的HTML标签就可以做交互式报表。

 

Dash安装

支持Python2和3

pip install dash==0.18.3
pip install dash-renderer==0.10.0
pip install dash-html-components==0.7.0
pip install dash-core-components==0.12.6
pip install plotly --upgrade

安装成功之后,我们先来运行一个简单的示例。这里拿13日收盘后涨幅排名前50只股票的PE做一个柱状图的展示。

运行效果如下:

交互式效果

由于时间关系,暂且只从官网找一些交互式效果展示给大家。

1、通过pandas DataFrame数据展示Slide效果

2、动态地图效果

3、交互式数据表格

 

4、动态3D效果

 

Dash组件

Dash封装了常见常用的HTML组件,类似上面动态交互的输入框、下拉菜单,按钮等。

 

我们看几个最简单的,有兴趣的朋友可以自己尝试。

 

1、输入框

2、复选框

3、按钮

4、数据上传组件

5、选项卡功能

总结

使用下来总体感觉比较简单,很方便快捷的构建起了交互式报表的效果。组件化的方式和实现方式比较传统,很适合我们这种老程序员上手:) 

 

对于新入行的技术人员来说,这个工具无疑也是一个非常好的上手交互式可视化的利器。在大数据可视化需求多样化、花样化的当下,在众多可视化工具可供选择的当下,一款最适合自己、最适合当前项目的才是最优选择。

 

以上介绍,希望对你有用。

 

 

dash提供了常见网页控件: 输入框,下拉框,滑动条,复选框, MarkDown格式等等。

 

 

 

 

plotly画出的每个对象都能直接当成参数传入,看一个例子:

选择我们上次画等高线图,直接插入画好的fig对象:

import plotly.graph_objects as go
fig = go.Figure(data=
        go.Contour(
            z=[[10, 10.625, 12.5, 15.625, 20],
               [5.625, 6.25, 8.125, 11.25, 15.625],
               [2.5, 3.125, 5., 8.125, 12.5],
               [0.625, 1.25, 3.125, 6.25, 10.625],
               [0, 0.625, 2.5, 5.625, 10]]
        ))
.........
 dcc.Graph(

        id='example-graph',
        figure=fig
)

 

 

 

 

 

 

posted @ 2017-10-16 09:42  微信公众号--共鸣圈  阅读(8671)  评论(1编辑  收藏  举报