Py学习  »  Python

适用于任何学科| 10个好用的 Python数据可视化库

生信菜鸟团 • 4 年前 • 653 次点击  

【热】生信分析方向如何系统入门python3|2020更新版 现已更新,欢迎有更多的小伙伴一起加入学习。


最近在查找 Python数据的可视化方法,在 Mode Blog 上看到一篇标题为 《10 Useful Python Data Visualization Libraries for Any Discipline》(作者@MELISSA BIERLY)的引导介绍,看完后收获不少,因此在此转述一下,小伙伴可以自行挑选喜欢的可视化工具。

Scroll through the Python Package Index and you'll find libraries for practically every data visualization need—from GazeParser for eye movement research to pastalog for realtime visualizations of neural network training. And while many of these libraries are intensely focused on accomplishing a specific task, some can be used no matter what your field.

matplotlib

matplotlib.org

尽管已有十多年的历史了,但它仍然是Python社区中使用最广泛的绘图库。它的设计非常类似于1980年代开发的专有编程语言MATLAB。

由于matplotlib是第一个Python数据可视化库,因此许多其他库都建立在它之上或被设计为协同工作,诸如 pandas 和 Seaborn 之类,当然也就可以使用更少的代码调用matplotlib。

尽管matplotlib有助于理解数据,但对于快速、轻松地创建具有出版物质量的图表而言,它并不是非常给力。正如Chris Moffitt 所说,matplotlib「功能非常强大,但随之而来的却是复杂性」。

Seaborn

http://web.stanford.edu/~mwaskom/software/seaborn/index.html

我们在上面提到 Seaborn也是调用matplotlib,关键的区别是 Seaborn 可以使用几行代码创建漂亮的图表,其默认样式和调色板也会使得可视化在设计上更加美观和现代。但也正基于此,使用 Seaborn首先需要了解 matplotlib的参数才能调整 Seaborn的默认设置。

ggplot

http://ggplot.yhathq.com/

对你没有看错,这是python版的 ggplot,基于R绘图系统 ggplot2的绘图语法,进行图层操作,这与 matplotlib的操作不同。根据开发者的说法,ggplot并非用于创建高度定制的图形,It sacrifices complexity for a simpler method of plotting.

需要提醒的是:ggplot与 pandas高度集成,因此在使用 ggplot时最好将数据存储为 DataFrame数据格式。

Bokeh

http://bokeh.pydata.org/en/latest/

与 ggplot一样,Bokeh基于 Graphics的语法,但是它属于 Python 原生。它的优势在于能够创建交互式、web-ready plots,这有利于将其轻松输出为 JSON对象、HTML文档或交互式Web应用程序。Bokeh 同时还支持流媒体和实时数据。

Bokeh 提供了三个具有不同控制级别的界面,The highest level 用于快速绘图,例如条形图,箱形图和直方图。The middle level 用于与matplotlib相同的特性,允许您控制每个图表的基本构建块(例如,散点图中的点)。The lowest level 面向开发人员和软件工程师,它不包含预设的默认值,要求完全自定义图表中的每个元素。

Plotly

https://plot.ly/python/

我们在上一期的可视化推文中简单介绍了一下 Plotly,不仅仅是在线作图,在 jupyter notebook上 Plotly的交互式作图是它的强项,同时它还具有大多数作图包不包含的图表类型,例如 contour plots, dendograms, and 3D charts.

pygal

http://www.pygal.org/en/latest/index.html

像 Bokeh和 Plotly一样,pygal也提供可嵌入到Web浏览器中的交互式作图方式。它的主要区别在于能够将图表输出为SVG。但是,如果您要制作包含成千上万个数据点的图表,将会表现为 「算力不够」而变得迟钝。它将所有的图表类型打包在一个方法中,且默认样式好看,因此很容易就可以实现几行代码创建外观漂亮的图表。

geoplotlib

https://github.com/andrea-cuttone/geoplotlib

geoplotlib 常用于创建地图和绘制地理数据。您可以使用它来创建各种地图类型,例如,容积率,热图和点密度图。但是必须安装Pyglet(an object-oriented programming interface)才能够使用geoplotlib。

Gleam

https://github.com/dgrtwo/gleam

Gleam 受到R语言的 Shiny 包的启发。它允许您只使用Python脚本时将分析变成交互式Web应用程序,因此不需要HTML,CSS或JavaScript。Gleam 可与任何Python数据可视化库一起使用。创建绘图后,您可以在其上方构建字段,以便用户可以对数据进行简单处理。

missingno

https://github.com/ResidentMario/missingno

Dealing with missing data is a pain. 而 missingno 无需浏览表格,能够快速对数据进行可视化帮助你对数据完整性进行评估,基于热图或树状图的进行排序和过滤。

Leather

http://leather.readthedocs.io/en/latest/index.html

Leather is the Python charting library for those who need charts now and don’t care if they’re perfect.

Leather isn't picky. It's rough. It gets dirty. It looks sexy just hanging on the back of a chair. Leather doesn't need your accessories. Leather is how Snake Plissken would make charts.

非常有个性的介绍语… 基本绘图如下:

import leather

data = [
    (03),
    (45),
    (79),
    (84)
]

chart = leather.Chart('Dots')
chart.add_dots(data)
chart.to_svg('examples/charts/dots.svg')

杂谈

绘图绕不过R。

Python 很多包都在强调自己的可视化交互性能力强,这与R ggplot的那种交互式不太一样,更多的Python包在web上可以查看数据的具体信息,当然R也类似的包。两种语言具有互补性,但也能看出 Python的包也是「借鉴」了R的数据处理思路及作图方法。Python在泛型编程上更有优势,而R 在数据探索、统计分析是一种更高效的独立数据分析工具。

至于怎么选,引用 @fool的回答吧:

实际上吧,我认为更多的情况下要画出漂亮的科技图表,你需要的不是一种新的技术而是审美。

好像被降维打击了。哈哈,愿你有所收获。

主要参考资料

https://mode.com/blog/python-data-visualization-libraries


看到这里的你,应该对这个故事也会感兴趣 菜鸟团2019周四发生的那些事点点看呗


最后是友情推广

如果你也对学徒培养或者实习职位感兴趣,想在我们的指导下完成NGS数据分析,可以先看看我是如何培养学徒的:

当然了,学徒培养看缘分! 发邮件给我申请:jmzeng1314@163.com

实习生(生物信息学知识体系的建立)招募

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53113
 
653 次点击