我常用的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、地图等等,这个后面慢慢分享。

相关文章
|
3天前
|
数据采集 数据可视化 数据挖掘
基于Python的数据分析与可视化实战
本文将引导读者通过Python进行数据分析和可视化,从基础的数据操作到高级的数据可视化技巧。我们将使用Pandas库处理数据,并利用Matplotlib和Seaborn库创建直观的图表。文章不仅提供代码示例,还将解释每个步骤的重要性和目的,帮助读者理解背后的逻辑。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供有价值的见解和技能。
15 0
|
22小时前
|
Shell Python
Python 的 os 库的应用实例
Python 的 os 库的应用实例
|
22小时前
|
Linux Python Windows
Python sys 库的应用实例
Python sys 库的应用实例
10 3
|
22小时前
|
Python
Python 中的 spell checker 库
Python 中的 spell checker 库
|
3天前
|
人工智能 搜索推荐 API
使用 Python holidays 库获取中国节日
使用 Python holidays 库获取中国节日
20 2
|
23小时前
|
数据采集 数据可视化 数据挖掘
Python 数据分析实战:使用 Pandas 进行数据清洗与可视化
【10月更文挑战第3天】Python 数据分析实战:使用 Pandas 进行数据清洗与可视化
9 0
|
2天前
|
SQL Rust Go
Python通过C动态链接库调用C语言函数
Python通过C动态链接库调用C语言函数
|
2天前
|
Rust Go C语言
Python通过C动态链接库调用Go语言函数
Python通过C动态链接库调用Go语言函数
|
3天前
|
存储 程序员 数据库
【Python】标准库的使用
【Python】标准库的使用
16 0
|
4天前
|
Python
告别阻塞,拥抱未来!Python 异步编程 asyncio 库实战指南!
高效处理并发任务对提升程序性能至关重要,Python 的 `asyncio` 库提供了强大的异步编程支持。通过 `async/await` 关键字,可以在等待操作完成时不阻塞程序执行,显著提高效率和响应性。`asyncio` 支持定义异步函数、创建任务、等待多个任务完成等功能,并能结合第三方库如 `aiohttp` 实现异步网络请求。此外,它还支持异常处理,确保异步代码的健壮性。借助 `asyncio`,您可以轻松构建高性能、响应迅速的应用程序。
9 0