视觉是人们很重要的一种感官,所以,可视化,在数据相关的研发中可以起到“四两拨千斤”的作用。如果从直接查看离线存储在各类数据库中杂乱无章的数据,会让人瞬间感到崩溃、没有头绪。但是,如果对数据进行可视化,就变得一目了然。
例如,我们可以通过可视化看到一年中不同月份的降雨量、中国各个城市房价的对比、不同行业的薪资水平等。
Python相关的开发工作,很难绕过数据这一关,无论是做数据分析与挖掘,还是机器学习、计算机视觉。因此,一款好用的Python可视化工具,可以让开发效率得到极大的提升。本文就来介绍6款Python可视化工具,它们各有所长,适用于不同的场景,总会有一款适合你。
matplotlib
再提到matplotlib就有一些老生常谈了,我想,凡是做过Python开发的,应该对matplotlib都不陌生,它俨然已经成了Python的标准库级别的第三方库。
matplotlib可以称得上中规中矩,它像大多数编程语言的标准库一样,读写、显示、子图、常见图形,可以满足大多数需求常见。
pyecharts
pyecharts是基于百度开源的Echarts开发的Python版可视化工具。
如果说matplotlib中规中矩,那么pyecharts可以称得上强大,例如,
- 支持多达400+地图
- 支持Jupyter Notebook、JupyterLab
- 可轻松集成至 Flask,Sanic,Django 等主流 Web 框架
- ...
from pyecharts.charts import Bar from pyecharts import options as opts # V1 版本开始支持链式调用 bar = ( Bar() .add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"]) .add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105]) .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49]) .set_global_opts(title_opts=opts.TitleOpts(title="某商场销售情况")) ) bar.render() # 不习惯链式调用的开发者依旧可以单独调用方法 bar = Bar() bar.add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"]) bar.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105]) bar.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49]) bar.set_global_opts(title_opts=opts.TitleOpts(title="某商场销售情况")) bar.render()
更重要的是pyecharts可以保存为离线的HTML文件,能够将图标详细数据离线保存,便于离线分析。
plotly.py
相对于前两款Python可视化工具,plotly.py更偏重于交互式图形可视化。
plotly.py是基于plotly.js进行开发,它继承了plotly.js的诸多优点,例如,可以绘制科学图表,3D图形,统计图表,SVG地图,财务图表等丰富图形。
AutoViz
数据可视化,大多数都需要把数据读取到内存中,然后对内存中的数据进行可视化。但是,对于真正令人头疼的是一次又一次的开发读取离线文件的数据接口。
而AutoViz就是用于解决这个痛点的,它真正的可以做到1行代码轻松实现可视化。它可以同时兼容txt、json、csv等主流离线数据格式,比较适合于机器学习、计算机视觉等涉及离线数据较多的应用场景。
Altair
Altair是一款基于Vega 和Vega-Lite开发的统计可视化库。
import altair as alt from vega_datasets import data source = data.unemployment_across_industries.url alt.Chart(source).mark_area().encode( alt.X('yearmonth(date):T', axis=alt.Axis(format='%Y', domain=False, tickSize=0) ), alt.Y('sum(count):Q', stack='center', axis=None), alt.Color('series:N', scale=alt.Scale(scheme='category20b') ) ).interactive()
Altair构建在强大的Vega-Lite JSON规范之上,并且具有API简单、友好、一致等诸多优点。因此,通过使用Altair,你可以把更多时间花费在理解数据和业务逻辑上,用最简短的代码实现数据可视化。
cufflinks
plotly前面已经介绍过,是一款非常强大的绘图工具。而pandas又是Python数据处理中非常常用的一个第三方库,那么,能不能把这两款强大的工具结合在一起呢?
cufflinks的回答是肯定的!
cufflinks结合了plotly的强大功能和panda的灵活性,可以方便地进行绘图,因此,就不需要在数据可视化过程中,对数据存储结构和数据类型进行复杂的转化了。
df=cf.datagen.ohlc() qf=cf.QuantFig(df,title='First Quant Figure',legend='top',name='GS') qf.add_bollinger_bands() qf.iplot()
结语
上述介绍的6款Python可视化工具,各有所长,特色明显:
- matplotlib适用场景广泛、中规中矩。
- AutoViz适合离线数据可视化。
- plotly.py见长与交互可视化。
- ...
每位同学的工作场景不同,需求自然也不同,各位可以根据自己的的需求自行从中选择一款最适合自己的可视化工具!