1.无处不在的数据可视化
提到数据可视化,大家可能脑海里就会出现里各种图表、绚丽大屏、或者科幻电影里酷炫仪表。其实,日常生活里面,到处都有数据可视化的影子。
![5a3fc7f172b0b423e859fedd556c8ff1.png](https://i-blog.csdnimg.cn/blog_migrate/cce967b62662253a2e4a22c33c2b5cfa.jpeg)
手表就是数据可视化的例子,最少只需要3个视觉元素(时针、分针和秒针),就可以表达43200个状态。另外,水银温度计和地铁线路图,也是生活中数据可视化的运用!
2.为什么需要数据可视化?
视觉是人类获取外界信息最高速,最主要也是最重要渠道。 超过50%的人脑功能用于视觉感知,而大脑接收到的信息 90% 来自视觉,人类利用视觉获取和处理的信息量,远远超出其他途径。
![23bdbd51508ee10bafcdf32d7b6b37f6.png](https://i-blog.csdnimg.cn/blog_migrate/ac6a7975a72e06c760750d4f84dc0d2c.jpeg)
视觉的信息带宽是最大的,其次是触觉和听觉。
人类大脑处理图像的速度比文本快 6 万倍。所谓的“可视化”,就是利用人类视觉化的思考能力,对数据进行可视表达以增强认知的技术。
3.Python数据可视化学习
说到python的常见应用,很多人会想到python的数据分析,作为数据分析中的表现层面,数据可视化都是其中必不可少的部分。但本文并非只推荐无任何数据分析需求仅需要做漂亮可视化图表的人学习python数据可视化。本文介绍的只是一些常见的python第三方库,毕竟作为一个工具来说,这些第三方库使用起来并不是非常方便,也有一定的学习成本,普通的可视化推荐使用excel、wps,有条件的可以使用各种BI工具如:tableau,powerBI等。
那什么情况下需要用到python数据可视化库呢?
如果是在某些特定场景中,需要用到python做数据分析,输出各种图表用于辅助分析或者数据报告展示,那这些库则显得必不可少,接下来将介绍一些如何学习的方法和第三方库的介绍:
比如选择一款合适的库,先了解各种库的特点,选择合适的库,然后学习绘图原理,掌握的知识点
选择官网是最省钱和系统的学习的最佳路径,至于效率方面见仁见智。选择书籍或视频的方式也未尝不可。
- 了解几大常用的可视化库,比如特性、使用场景、效果图等;
- 选择一款适合自己的第三方库,比如要做国内地图类的项目,选择pyecharts;
- 学习该库的绘图原理,各种函数调用和参数修改,就是所谓的"调参";
- 不断练习、练习、练习;
推荐学习使用的开发工具:JupyterNotebook。在数据分析和可视化的应用中,jupyter无疑是首选,相比其他如pycharm等工具,可以将每一步的可视化图表输出在同一页面中,方便比较分析。
![111715746b48053786ea277e053fd602.png](https://i-blog.csdnimg.cn/blog_migrate/03925b33098ef615f53aa88aac865984.jpeg)
4.可视化库介绍
- 1 -
Matplotlib
官方文档地址:
https://matplotlib.org/2.0.2/index.html
Gallery画廊地址:
https://matplotlib.org/2.0.2/gallery.html
![e27a99d4aca1ba472175b11ef376bfe8.png](https://i-blog.csdnimg.cn/blog_migrate/6511760aea0c07e58612d5d6d218b006.jpeg)
matplotlib是Python数据可视化库的OG。尽管它已有十多年的历史,但仍然是Python社区中使用最广泛的绘图库。它的设计与MATLAB非常相似,MATLAB是20世纪80年代开发的专有编程语言。通常在python数据分析的教程中经常会包含该库的学习。
基础讲解:使用matplotlib绘图的原理,主要就是理解figure(画布)、axes(坐标系)、axis(坐标轴)三者之间的关系。
步骤:创建figure图形对象-> 获取对应位置的axes坐标系对象->调用axes对象,进行对应位置的图形绘制->显示图形。下图是帮助我们理解figure和axes的关系。
![79fa2c71dc5f2b31ea0ff810dae07da9.png](https://i-blog.csdnimg.cn/blog_migrate/11039f339776f5bc6cea00363287220b.jpeg)
- 2 -
Seaborn
官方文档地址:
https://seaborn.pydata.org/tutorial.html
Gallery画廊地址:
https://seaborn.pydata.org/examples/index.html
![1524ceb5e2311d3ab7c656bd05bf316f.png](https://i-blog.csdnimg.cn/blog_migrate/7c5a0ab8cc489300654a33501e1cd1bb.jpeg)
Seaborn利用matplotlib的强大功能,可以只用几行代码就创建漂亮的图表。关键区别在于Seaborn的默认款式和调色板设计更加美观和现代。由于Seaborn是在matplotlib之上构建的一个更高级的库,因此还需要了解matplotlib以便调整Seaborn的默认值,所以在matplotlib上的调参也可以在Seaborn上面使用。Seaborn针对的点主要是数据挖掘和机器学习中的变量特征选取,seaborn可以用短小的代码去绘制描述更多维度数据的可视化效果图。
基础讲解:原理比较简单,主要是通过sns对象调用各种类型表格的函数,这里举一个例子:
import numpy as npimport seaborn as snsfrom scipy import stats, integrate%matplotlib inline #导入库sns.set(color_codes=True)np.random.seed(sum(map(ord, "distributions")))#构造数据,每次产生的随机数相同x = np.random.gamma(6, size=200) #输出图像的主要函数,distplot是直方图,根据需求选择不同的图表函数即可sns.distplot(x, kde=False, fit=stats.gamma)
![337eb857f3e4cc7e6e490ccdcd548671.png](https://i-blog.csdnimg.cn/blog_migrate/e640b7dec256ab38d94425bd48af9751.jpeg)
- 3 -
Pyecharts
官方文档地址:
https://pyecharts.org/
Gallery画廊地址:
http://gallery.pyecharts.org/#/README
![b48f905d721d1a196d53884b0a48a758.png](https://i-blog.csdnimg.cn/blog_migrate/17814af0023ac69ec37386976f605fdb.jpeg)
Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。
这是国人开发的一个Echarts与Python结合的轮子,可以结合JavaScript等前端技术定制我们要的主题风格,功能非常强大,也是数据可视化非常常用的一个工具,也是比较推荐新手学习的。
基础讲解: 选择图表类型-> 声明图形类并添加数据,比如添加x轴和y轴的数据->选择全局变量set_global_opts,设置参数->显示及保存图表;
from pyecharts.charts import Barfrom 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()))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())bar.render()
![25bf4730a49fd2e4b255cdc9e1da07ad.gif](https://i-blog.csdnimg.cn/blog_migrate/007610764107fde8c43493f5c7f1fc10.gif)
注:各种不同的图表输入的数据格式会有所不同,导致部分复杂图表的设置难度较大。
- 4 -
ggplot
官方文档地址:
http://ggplot.yhathq.com/
![16885b3b916e62bd65c4bb73ebd03549.png](https://i-blog.csdnimg.cn/blog_migrate/348830cfc3566c2bcd722b45da04ab50.jpeg)
ggplot基于ggplot2,一个 R 语言绘图系统,以及The Grammar of Graphics的概念。ggplot的运行方式与matplotlib不同:它允许你对组件进行分层以创建完整的绘图。例如,你可以从轴开始画,然后添加点,然后是线、趋势线等。虽然图形语法被称为绘图的“直观”方法,但经验丰富的matplotlib用户可能需要时间来适应这个新的方式。
- 5 -
Bokeh
官方文档地址:
https://docs.bokeh.org/en/latest/
Gallery画廊地址:
https://docs.bokeh.org/en/latest/docs/gallery.html
![e6855072da5f85061d5e9461aa759c2f.png](https://i-blog.csdnimg.cn/blog_migrate/8120997538b4c82de36a779a59d19d94.jpeg)
与ggplot一样,Bokeh同样基于The Grammar of Graphics,但与ggplot不同的是,它是原生Python的,而不是从R语言移植过来的。它的优势在于能够创建交互式的网站图,它可以很容易地输出为JSON对象、HTML或交互式Web应用程序。Bokeh还支持流媒体和实时数据。
- 6 -
Pygal
官方文档地址:
http://www.pygal.org/en/stable/
![fd60330fa5feb4cdeb1b2ed9db531c80.png](https://i-blog.csdnimg.cn/blog_migrate/e12ded5a751014715898b4b4d3cd9d04.jpeg)
与Bokeh和Plotly一样,pygal提供可以嵌入Web浏览器的交互式图。它的主要区别在于能够将图表输出为SVG格式。如果你使用较小的数据集,SVG格式的图像就可以了。但是如果制作的图表包含数十万个数据点,它们就会很难渲染并变得反应迟钝。
- 7 -
Plotly
官方文档地址:
https://plotly.com/
![9327acc70807474512584d90019e05b3.png](https://i-blog.csdnimg.cn/blog_migrate/ebd4a380f61a6226c40e205ada648ad5.jpeg)
你可能知道Plotly是一个数据可视化的在线平台,但你是否也知道可以从Python笔记本使用它的功能?与Bokeh一样,Plotly的强项正在制作交互式图,但它提供了一些在大多数库中没有的图表,如等高线图,树状图和3D图表。
- 8 -
Geoplotlib
Github地址:
https://github.com/andrea-cuttone/geoplotlib
![d0c140ef0103b058b1cd1114b10a6bb3.png](https://i-blog.csdnimg.cn/blog_migrate/2d703d7f426e70cd25d407e786bd50aa.jpeg)
geoplotlib是一个用于创建地图和绘制地理数据的工具库。可以使用它来创建各种地图类型,例如等值线,热图和点密度贴图。你必须安装Pyglet(面向对象的编程接口)才能使用geoplotlib。尽管如此,由于大多数的Python数据可视化库都没有提供地图类型,因此有一个专门的库还是可以的。
参考文章:《数据可视化入门教程》https://www.yuque.com/mo-college/beginner-tutorial/uvaiu2
深度讲解Python四大常用绘图库的“绘图原理” https://my.oschina.net/u/4579597/blog/4444177