我常用的5个Python可视化库

简介: 我常用的5个Python可视化库

Python因为其语法简单、胶水语言的特性,诞生了很多好用的轮子(标准库、第三方库),也因此让Python一度成为了最热门的编程语言(2023年1-10月 TIOBE编程语言排名第一)。

我用过很多Python库,因为数据分析展示的需要,经常用一些可视化库来设计图表,这些库有不同的应用场景,生产力非常强大。

基础可视化:Matplotlib、Seaborn、Altair

交互可视化:Bokeh、plotly

地图可视化:Cartopy、Folium

Web可视化:Dash

BI可视化:Superset

流程图可视化:PyGraphviz

4fec222b21f456eeaf82158b4d90fd9b.jpg

下面详细介绍下常见的5个可视化库:Matplotlib、Seaborn、Altair、Bokeh、plotly

1. Matplotlib

Matplotlib不必多说,它是最流行的Python可视化库,可以绘制二维、三维、动态、交互等任何图表,也是Seaborn等众多可视化库的底层依赖。

学习文档:https://matplotlib.org/

Matplotlib的特点是图表功能齐全,可定制化强,一般专业的新闻图表、科研图表、出版图表、企业图表都可以用Matplotlib绘制。

唯一的缺点是高级封装不多,绘图代码稍显复杂。

b6cf63989dd0a77011607edd2ecf4ff8.jpg

import matplotlib.pyplot as plt
data = {'apple': 10, 'orange': 15, 'lemon': 5, 'lime': 20}
names = list(data.keys())
values = list(data.values())
fig, axs = plt.subplots(1, 3, figsize=(9, 3), sharey=True)
axs[0].bar(names, values)
axs[1].scatter(names, values)
axs[2].plot(names, values)
fig.suptitle('Categorical Plotting')

f8af9995af165785f15f091b6abdad27.jpg

2. Seaborn

Seaborn是在Matplotlib基础上经过高级封装的可视化库,一般用于统计分析,是数据科学领域的核心可视化库,类似于kaggle这种数据比赛大部分都用Seaborn。

解释下高级封装,所谓封装就是把很多图表的功能模块化,拿来即用,不需要你写很多代码实现。

比如说Seaborn可以一行代码设置图表的配色风格,什么统计风、商务风、学术风,都给你搭配的妥妥的,还有像置信区间这种专业领域的图表也集成到函数中。

学习文档:https://seaborn.pydata.org/

042700126ea762a3984cc9590c2d240f.jpg

另外Seaborn与Pandas、Numpy集成的非常好,可以轻松使用Series、DataFrame、array数据类型进行图表开发,相较于Matplotlib节省了很多数据处理的时间,让你更加专注于制图。

示例:

import seaborn as sns
sns.set_theme(style="darkgrid")
tips = sns.load_dataset("tips")
g = sns.jointplot(x="total_bill", y="tip", data=tips,
                  kind="reg", truncate=False,
                  xlim=(0, 60), ylim=(0, 12),
                  color="m", height=7)

1fa733e5ce475f9616f22772a3686079.jpg

3. Altair

Altair也是Python中一个主打统计分析的可视化库,它和Seaborn不同的是,语法会更加简洁,让你在可视化的过程中去分析梳理数据。

Altair基于Vega-Lite语法规则,将可视化描述为从数据到图形标记(例如,圆圈、矩形或折线)和属性(例如,颜色、大小、形状或透明度)的编码映射过程,使用Json格式规范图表外观,使用起来非常简单。

学习文档:https://altair-viz.github.io/

86d107351e58204fc0769f06fb22eec2.jpg

示例代码

import altair as alt
from vega_datasets import data
source = data.iris()
alt.Chart(source).mark_circle().encode(
    alt.X('sepalLength').scale(zero=False),
    alt.Y('sepalWidth').scale(zero=False, padding=1),
    color='species',
    size='petalWidth'
)

f59a16a136fbafcb6bc519536abf6da7.jpg

4. Bokeh

Bokeh主打web交互式可视化,图表不再是冷冰冰的图片,而是可以随意去调整的可视化交互工具,比如创建看板、应用、网页,都可以轻松实现,你也可以在jupyter notebook上去展示Bokeh图表。

Bokeh有很多的交互工具,比如缩放、平移、框选、悬停、重置、编辑、图像导出等等,使用起来非常方便。

学习文档:https://docs.bokeh.org/

e29d7435c581e2ed27497e61d52c3749.jpg

  • 搭建可视化应用

bbfd27257fd9204f1e18aeb60b8649ff.jpg

  • 搭建看板

7c7ea964950ec31e81cce35a02d7382f.jpg

  • Jupyter notebook数据可视化探索

f1908b4994800e2f48dba842ec648cde.jpg

  • 数据流分析

702255ab5f793c54833743ef26760679.jpg

  • web网页

aaa2418b67bd06117530712d371d60a9.jpg

示例代码

import numpy as np
import pandas as pd
from bokeh.palettes import tol
from bokeh.plotting import figure, show
N = 10
df = pd.DataFrame(np.random.randint(10, 100, size=(15, N))).add_prefix('y')
p = figure(x_range=(0, len(df)-1), y_range=(0, 800))
p.grid.minor_grid_line_color = '#eeeeee'
names = [f"y{i}" for i in range(N)]
p.varea_stack(stackers=names, x='index', color=tol['Sunset'][N], legend_label=names, source=df)
p.legend.orientation = "horizontal"
p.legend.background_fill_color = "#fafafa"
show(p)

4d8329c519f21932f923b706f216766d.jpg

5. plotly

plotly.js是非常出名的交互式可视化工具,它有Python的第三方接口,也就是plotly库。

plotly图表类型比较丰富,比如折线图、散点图、面积图、条形图、误差条、方框图、直方图、热图、子图、多轴图、极坐标图、气泡图、地图等等,这些都集成好固定的函数用法,可以拿来即用。

plotly绘制的图表相对比较美观,适合商用展示,且它的图表可以基于web,能进行多元化的交互操作。

其次plotly可定制化也非常强,类似于matplotlib,你可以对图表做任何细节的修改。

学习文档:https://plotly.com/python/

76fe9333e32a8181f472f316a50ddd38.jpg

示例代码

import plotly.graph_objects as go  
import numpy as np  
  
# Data to be plotted 
x = np.outer(np.linspace(-2, 2, 30), np.ones(30))  
y = x.copy().T  
z = np.cos(x ** 2 + y ** 2)  
  
# plotting the figure 
fig = go.Figure(data=[go.Surface(x=x, y=y, z=z)])  
  
fig.show()

af354a377410c6bb07034eb3a951a99b.jpg

小结

上述的5个Python可视化库都是比较常见的,几乎能实现你大部分需求,还有一些垂直类的需求需要专门的库来实现,比如BI、地图等等,这个后面慢慢分享。

相关文章
|
1天前
|
数据采集 网络协议 API
HTTP协议大揭秘!Python requests库实战,让网络请求变得简单高效
【9月更文挑战第13天】在数字化时代,互联网成为信息传输的核心平台,HTTP协议作为基石,定义了客户端与服务器间的数据传输规则。直接处理HTTP请求复杂繁琐,但Python的`requests`库提供了一个简洁强大的接口,简化了这一过程。HTTP协议采用请求与响应模式,无状态且结构化设计,使其能灵活处理各种数据交换。
25 8
|
2天前
|
数据采集 传感器 数据可视化
利用Python进行数据分析与可视化
【9月更文挑战第11天】在数字化时代,数据已成为企业决策和科学研究的关键。本文将引导读者了解如何使用Python这一强大的工具进行数据分析和可视化,帮助初学者理解数据处理的流程,并掌握基本的可视化技术。通过实际案例,我们将展示如何从原始数据中提取信息,进行清洗、处理,最终以图形方式展现结果,使复杂的数据变得直观易懂。
|
5天前
|
JSON API 开发者
Python网络编程新纪元:urllib与requests库,让你的HTTP请求无所不能
【9月更文挑战第9天】随着互联网的发展,网络编程成为现代软件开发的关键部分。Python凭借简洁、易读及强大的特性,在该领域展现出独特魅力。本文介绍了Python标准库中的`urllib`和第三方库`requests`在处理HTTP请求方面的优势。`urllib`虽API底层但功能全面,适用于深入控制HTTP请求;而`requests`则以简洁的API和人性化设计著称,使HTTP请求变得简单高效。两者互补共存,共同推动Python网络编程进入全新纪元,无论初学者还是资深开发者都能从中受益。
26 7
|
12天前
|
机器学习/深度学习 PyTorch 算法框架/工具
python这些库和框架哪个更好
【9月更文挑战第2天】python这些库和框架哪个更好
29 6
|
12天前
|
机器学习/深度学习 数据采集 算法框架/工具
python有哪些常用的库和框架
【9月更文挑战第2天】python有哪些常用的库和框架
18 6
WK
|
12天前
|
数据采集 XML 安全
常用的Python网络爬虫库有哪些?
Python网络爬虫库种类丰富,各具特色。`requests` 和 `urllib` 简化了 HTTP 请求,`urllib3` 提供了线程安全的连接池,`httplib2` 则具备全面的客户端接口。异步库 `aiohttp` 可大幅提升数据抓取效率。
WK
33 1
WK
|
15天前
|
机器学习/深度学习 数据采集 算法框架/工具
Python那些公认好用的库
Python拥有丰富的库,适用于数据科学、机器学习、网络爬虫及Web开发等领域。例如,NumPy和Pandas用于数据处理,Matplotlib和Dash用于数据可视化,Scikit-learn、TensorFlow和PyTorch则助力机器学习。此外,Pillow和OpenCV专长于图像处理,Pydub处理音频,Scrapy和Beautiful Soup则擅长网络爬虫工作
WK
20 4
|
16天前
|
机器学习/深度学习 JSON 数据挖掘
什么是 Python 库?
【8月更文挑战第29天】
41 4
|
15天前
|
机器学习/深度学习 存储 算法
NumPy 与 SciPy:Python 科学计算库的比较
【8月更文挑战第30天】
41 1
|
15天前
|
机器学习/深度学习 数据可视化 数据挖掘
Python中的数据可视化:使用Matplotlib库绘制图表
【8月更文挑战第30天】数据可视化是数据科学和分析的关键组成部分,它帮助我们以直观的方式理解数据。在Python中,Matplotlib是一个广泛使用的绘图库,提供了丰富的功能来创建各种类型的图表。本文将介绍如何使用Matplotlib库进行数据可视化,包括安装、基本概念、绘制不同类型的图表以及自定义图表样式。我们将通过实际代码示例来演示如何应用这些知识,使读者能够轻松地在自己的项目中实现数据可视化。