数据呈现丨22个!史上最全Python数据可视化库大合集 Posted 2021-04-01 数据Seminar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据呈现丨22个!史上最全Python数据可视化库大合集相关的知识,希望对你有一定的参考价值。
如今数据可视化的应用场景越来越广泛,几乎各个领域、各个学科都有数据可视化发挥作用的地方。Python作为一个简单易学的语言,也在这方面为我们提供了不少便捷的工具。
本文整理的一些常见且实用的 Python 可视化库,相信总有一款适合你!
matplotlib可谓是Python数据可视化库中的泰斗。作为一个Python 2维绘图库,它已经成为python中公认的数据可视化工具,通过Matplotlib可以很轻松地画一些或简单或复杂的图形,几行代码即可生成直方图、条形图、散点图、密度图等等。
具体来说,它是一个在Python下实现的类matlab的纯Python的三方库,旨在用Python实现matlab的功能,是Python中最出色的绘图库之一,功能完善,同时也继承了Python的简单明了的风格,其可以很方便的设计和输出二维以及三维的数据,其提供了常规的笛卡尔坐标,极坐标,球坐标,三维坐标等,其输出的图片质量也达到了科技论文中的印刷质量,日常的基本绘图更不在话下。
官网
点击往期利用Matplotlib绘制图形的文章:
Seaborn是基于matplotlib的图形可视化python包,它在matplotlib的基础上进行了更高级的API封装,提供了一种高度交互式界面,从而使得作图更加容易,便于用户能够做出各种有吸引力的统计图表。它能高度兼容numpy与pandas数据结构以及scipy与statsmodels等统计模式。
Seaborn利用matplotlib的强大功能,几行代码就能创建漂亮的图表。其与matplotlib主要的区别是Seaborn的默认样式以及更美观、更现代的调色板设计。因为Seaborn建立在matplotlib之上,所以你需要了解matplotlib来调整 Seaborn 的默认值。
http://seaborn.pydata.org/
点击查看往期文章用Sesborn绘制图形的教程:
Bokeh是一个专门针对Web浏览器的呈现功能的交互式可视化Python库,支持现代化web浏览器展示(图表可以输出为JSON对象,html 文档或者可交互的网络应用),这是Bokeh与其它可视化库最核心的区别。它提供风格优雅、简洁的D3.js的图形化样式,并将此功能扩展到高性能交互的数据集,数据流上。使用Bokeh可以快速便捷地创建交互式绘图、仪表板和数据应用程序等。
Bokeh能与NumPy,Pandas,Blaze等大部分数组或表格式的数据结构完美结合。
matplotlib和seaborn都是面向过程的,在数据分析过程中可以呈现;Bokeh是在最后的结果呈现,可做动图,可只打开一张表,也可以做仪表盘的排版,可做图表的联动。
从概念上讲,Bokeh 类似于 ggplot,它们都是用图形语法来构建图片,但 Bokeh 具备可以做出专业图形和商业报表且便于使用的界面。
http://bokeh.pydata.org/en/latest/
点击查看往期文章用Bokeh绘制图形的教程:
Plotly是一个开源,交互式和基于浏览器的Python图形库,可以创建能在仪表板或网站中使用的交互式图表(可以将它们保存为html文件或静态图像)。Plotly基于plotly.js,而plotly.js又基于D3.js,因此它是一个高级图表库,与Bokeh一样,Plotly的强项是制作交互式图 ,有超过30种图表类型, 提供了一些在大多数库中没有的图表 ,如等高线图、树状图、科学图表、统计图表、3D图表、金融图表等。plotly绘制的图能直接在jupyter中查看,也能保存为离线网页,或者保存在plot.ly云端服务器内,以便在线查看。
plotly所支持的语言不只是Python,还支持诸如R,matlab,javescript等语言。如果使用Python语言,建议用jupyter notebook或jupyterlab作为IDE
Plotly的Python graphing library在网上提供了交互式的、公开的,高质量的图表集,可与R、python、matlab等软件对接。在申请了API密钥后,可以一键将统计图形同步到云端。但美中不足的是,打开国外网站会比较费时,且一个账号只能创建25个图表,除非你升级或删除一些图表。
点击查看往期文章用plotly绘制图形的教程:
pyecharts是基于 Echarts 开发的,是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 就诞生了,实际上就是 Echarts 与 Python 的对接。
值得注意的是pyecharts目前有 v0.5.X 和 v1 两个大版本,两者之间并不兼容,0.5.x 版本也不再进行维护,v1 是一个全新的版本,代码风格与v0.5.X也发生了比较大的变化,需要大家重新去学。
https://github.com/pyecharts/pyecharts/
官方教程:
Networkx于2002年5月面世,是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分析、仿真建模等工作。Networkx 是基于 matplotlib 的,是图形分析和可视化的一个很好的绝佳解决方案,可以快速简便地用图形表示网络之间的连接。
networkx支持创建简单无向图、有向图和多重图;内置许多标准的图论算法,节点可为任意数据;支持任意的边值维度,功能丰富,简单易用。
https://networkx.github.io/documentation/stable/tutorial.html
点击查看往期文章用Networkx绘制图形的教程:
wordcloud基于Python的词云生成类库。词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨。
https://amueller.github.io/word_cloud/
点击查看往期文章用wordcloud绘制图形的教程:
ggplot是基于R的ggplot2和图形语法的Python的绘图系统,实现了更少的代码绘制更专业的图形。它使用一个高级且富有表现力的API来实现线,点等元素的添加,颜色的更改等不同类型的可视化组件的组合或添加,而不需要重复使用相同的代码,然而这对那些试图进行高度定制的的来说,ggplot并不是最好的选择,尽管它也可以制作一些非常复杂、好看的图形。正如其创造者所说,ggplot不是为创建高度定制的图形而设计的,它为更简单的绘图方法牺牲了复杂性。ggplot与pandas紧密联系。如果你打算使用ggplot,最好将数据保存在DataFrames中。
ggplot的操作与matplotlib不同:它允许你对组件进行分层以创建完整的绘图。例如,你可以从坐标轴开始,然后添加点,再添加线、趋势线等。
http://ggplot.yhathq.com/
相关教程
官方文档:
http://ggplot.yhathq.com/docs/index.html
中文博客:
https://www.cnblogs.com/kkdaddd/p/8681960.html
由于大多数Python数据可视化库都不提供地图,所以最好有一个专门针对它们的库,Geoplotlib就是很好的一个。
geoplotlib是python的一个用于地理数据可视化和绘制地图的工具箱,你可以用它来创建各种各样的地图类型,比如等值线图、热图和点密度地图。它还提供了一个原始数据和所有可视化之间的基本接口,支持在纯python中开发硬件加速的交互式可视化,并提供点映射、内核密度估计、空间图、泰森多边形图、形状文件和许多更常见的空间可视化的实现。除了为常用的地理数据可视化提供内置的可视化功能外,geoplotlib还允许通过定义定制层来定义复杂的数据可视化(绘制OpenGL,如分数、行和具有高性能的多边形),创建动画。
https://residentmario.github.io/geoplot/index.htm l
https://residentmario.github.io/geoplot/quickstart/quickstart.html
Pygal 和其它常用的绘图包一样,也是用图形框架语法来构建图像的。它是一种开放标准的矢量图形语言,基于XML(Extensible Markup Language),与Bokeh和Plotly一样,pygal提供了可以嵌入到Web浏览器中的交互式绘图,可以生成多个输出格式的高分辨率Web图形页面,还支持给定数据的html表导出。
用户可以直接用代码来描绘图像,可以用任何文字处理工具打开SVG图像,通过改变部分代码来使图像具有交互功能,并且可以插入到HTML中通过浏览器来观看。只要你在处理较小的数据集,SVG就可以帮你做得很好。但是,如果你制作的图表中有数十万个数据点,它们将很难呈现,并且会变得迟钝。由于每种图表类型都被包装成一个方法,并且内置的样式很漂亮,所以用几行代码就可以很容易地创建一个美观的图表。
http://www.pygal.org/en/stable/
官方文档:
http://www.pygal.org/en/stable/documentation/index.html
中文博客:
https://blog.51cto.com/12731497/2160306
Cufflinks将Plotly直接绑定到pandas数据帧。这种组合非常惊人,结合了Pandas的灵活性,比Plotly更有效,语法甚至比plotly简单。使用plotly的Python库,您可以使用DataFrame的系列和索引来描述图形,但是使用Cufflinks可以直接绘制它。
https://github.com/santosjorge/cufflinks
https://blog.csdn.net/u010986753/article/details/98937811
Folium是一个建立在Python系统之上的js库,集Python生态系统的数据优势和Leaflet.js库的映射优势之上。既可以在python中操作数据,然后通过folium在Leaflet地图中将其可视化,还可自定义箭头,网格等HTML格式的地图标记。Folium是一个用于绘制空间数据的“神库”。你还可以使用folium生成热图和等值区域图。该库还附有一些内置的地形数据。
https://github.com/python-visualization/folium
官方文档:
https://python-visualization.github.io/folium/quickstart.html#Getting-Started
中文博客:
https://www.cnblogs.com/feffery/p/9282808.html
Altair是一个声明性统计(declarative statistical)可视化python库,基于Vega和Vega-Lite。声明意味着只需要提供数据列与编码通道之间的链接,例如x轴,y轴,颜色等,其余的绘图细节它会自动处理。声明使Altair变得简单,友好和一致。使用Altair可以轻松设计出有效且美观的可视化代码。Altair使您能够使用强大而简洁的可视化语法快速开发各种统计可视化图表。
https://altair-viz.github.io/
https://altair-viz.github.io/gallery/index.html
D3.js是目前市场上最好的数据可视化库之一,既可以将它与python一起使用,也可以与R一起使用。最初,它可以与javascript 一起使用,根据数据操作文档。您可以使用HTML,SVG和CSS将数据变成活灵活现的图表。D3.js并不要求您将自己绑定到任何专有框架,因为现代浏览器拥有D3.js所需的一切,它还用于组合强大的可视化组件和数据驱动的DOM操作方法。Python 和 R 使D3.js变得更简单,如果你是JS专业人员更不需要犹豫,D3.js是绝对是上佳之选。
官方文档:
https://github.com/d3/d3/wiki
中文博客:
https://blog.csdn.net/hyfound/article/details/80422395
处理丢失的数据是一件痛苦的事。没有高质量的数据,就没有高质量的数据挖掘结果,当我们做监督学习算法,难免会碰到混乱的数据集,缺失的值,当缺失比例很小时,可直接对缺失记录进行舍弃或进行手工处理,但如果情况更为复杂呢?missingno提供了一个小型的灵活的、易于使用的数据可视化和实用工具集,用图像的方式让你能够快速评估数据缺失的情况,而不是在数据表里面步履维艰。你可以根据数据的完整度对数据进行排序或过滤,或者根据热度图或树状图来考虑对数据进行修正。
missingno 是基于matplotlib建造的一个模块,出图速度很快,并且能够灵活的处理pandas数据,它允许你通过直观的总结快速衡量数据集的完整性,而不是艰难地浏览表格。你可以根据热图或树形图中的完成度或点相关来过滤和排序数据。
<http://www.github.com/ResidentMario/missingno>
https://blog.csdn.net/Andy_shenzl/article/details/81633356
“Leather是一个为那些现在需要图表而不在乎是否完美的人设计的Python图表库”,Leather的创建者Christopher Groskopf如是说。
Leather一种可读且用户界面友好的API,新手也能快速掌握。图像成品非常基础,适用于所有的数据类型,针对探索性图表进行了优化,产生与比例无关的SVG图,这样在你调整图像大小的时候就不会损失图像质量。
https://leather.readthedocs.io/en/latest/examples.html
HoloViews是一个开源的Python库,可以用非常少的代码行完成数据分析和可视化,除了默认的matplotlib后端外,还添加了一个Bokeh后端。Bokeh提供了一个强大的平台,通过结合Bokeh提供的交互式小部件,可以使用HTML5 canvas和WebGL快速生成交互性和高维可视化,非常适合于数据的交互式探索。
http://holoviews.org/user_guide/index.html
PyQtGraph是在PyQt4 / PySide和numpy上构建的纯 python的GUI图形库。它主要用于数学,科学,工程领域。尽管它完全是在python中编写的,但它对数据处理、数字运算和Qt的GraphicsView框架的影响巨大,可以最少的工作量完成,数据可视化速度也非常快。
http://www.pyqtgraph.org/
官方文档:
http://www.pyqtgraph.org/documentation/index.html
中文博客:
https://zmister.com/archives/219.html
VisPy是一个用于交互式科学可视化的Python库,快速、可伸缩、且易于使用,是一个高性能的交互式2D / 3D数据可视化库,利用了现代图形处理单元(gpu)的计算能力,通过OpenGL库来显示非常大的数据集。
http://vispy.org/index.html>
https://vispy.readthedocs.io/en/latest/documentation.html
Vincent是一个很酷的可视化工具,它以Python数据结构作为数据源,然后把它翻译成Vega可视化语法,并且能够在d3.js上运行。这让你可以使用Python脚本来创建漂亮的3D图形来展示你的数据。Vincent底层使用Pandas和DataFrames数据,并且支持大量的图表—-条形图、线图、散点图、热力图、堆条图、分组条形图、饼图、圈图、地图等等。
https://vincent.readthedocs.io/en/latest/
https://vincent.readthedocs.io/en/latest/quickstart.html
mpld3基于python的graphing library和D3js,汇集了Matplotlib流行的项目的JavaScript库,用于创建web交互式数据可视化。通过一个简单的API,将matplotlib图形导出为HTML代码,这些HTML代码可以在浏览器内使用。
https://blog.csdn.net/qq_41185868/article/details/81842840
Mayavi2是一个通用的、跨平台的三维科学数据可视化工具,可以在二维和三维空间中显示标量、向量和张量数据,也可通过自定义源、模块和数据过滤器轻松扩展。Mayavi2也可以作为一个绘图引擎,生成matplotlib或gnuplot脚本,也可以作为其他应用程序的交互式可视化的库,将生成的图片嵌入到其他应用程序中。
http://docs.enthought.com/mayavi/mayavi/
https://blog.csdn.net/ouening/article/details/76595427
本文收集了常见的Python绘图库,应付一般的绘图任务可是绰绰有余了,不过数据可视化有这么多种方法可供选择,选用最好最便捷的方案就变得极具挑战性了。
这里并不建议大家一个个去学,
收藏起来,等有需求后再有目的性的结合起来去学效果可能会更佳。
但在这里,我还是给出一个我的观点:倘若你想做一些专业的统计图表,我推荐你使用Seaborn,Altair;数学,科学,工程领域的学者可以选择PyQtGraph,VisPy,Mayavi2;网络研究和分析方面NetworkX,绝对是一个不错的选择,地理投影就选geoplotlib,folium;评估数据缺失就选missingno;有了HoloViews再也不用为高维图形犯愁;如果你不喜欢花俏的修饰,那就选择Leather;如果你是一名有MATLAB基础的新手,matplotlib相信你会很好上手;有R基础的可以选ggplot;即使你是小白或懒癌晚期者,Plotly也将会是你的一大福音,它提供了大量图表集可供你选择与使用。
► 往期推荐
回复【Python】以上是关于数据呈现丨22个!史上最全Python数据可视化库大合集的主要内容,如果未能解决你的问题,请参考以下文章
快收藏!史上最全156个Python网络爬虫资源
快收藏!史上最全156个Python网络爬虫资源
Python二级考试知识点(史上最全)
史上最全!Python爬虫requests库(附案例)
一个交互式可视化Python库——Bokeh
❤ C站最全Python库总结丨标准库+高级库(万字长文,建议收藏)