Python 的丰富软件包生态是其最大优势,但也让用户面临选择困难:
我是否在使用最好的数据可视化工具?
经过 10 年的思考,我决定分享我的见解,并用数据和图表支持我的观点,希望能成为这一主题的最佳参考。
上图展示了 GitHub 上按星号数量划分的 Python 包规模(主要用于装饰)。接下来,我们将通过决策树、量化指标和详细分析,帮助你选择最适合的工具。
如何选择?
如果你只想快速获取建议,可以参考以下决策树。但建议继续阅读,尝试不同选项。
这个简单的决策树帮助你选择 Python 数据可视化包。请勿仅依赖此图做决定,建议多尝试不同工具。
选择工具的关键在于你的需求:静态可视化(如文章插图)还是动态可视化(如网站或仪表板)。数据类型也很重要,许多工具专注于表格数据,而地理空间或图形数据则需要专门工具。
数据驱动的指标
你不想在已停止维护的包上浪费时间,同时可能相信开发者的集体智慧会引导出更有用的工具。以下指标量化了这些概念。
回顾过去几年 Python 软件包索引的下载量变化,几乎每个软件包看起来都在增长。
2020 年至 2024 年各包的 PyPI 下载量(对数尺度)
尽管下载量跨越多个数量级,但需注意,下载可能源于用户需求或其他包的依赖。例如,Seaborn 的下载量永远不会超过 Matplotlib,因为 Seaborn 依赖 Matplotlib。Altair 的下载量激增可能部分归因于它是 Streamlit 的依赖项。
GitHub 的 fork 和 star 数量是衡量项目受欢迎程度的指标,如下表所示,它们之间存在一定相关性。此外,贡献者数量和提交历史也能反映项目健康状况,Seaborn 的表现让我有些担忧。
十个 Python 数据可视化包的多指标热图
以下是针对这十个包的详细分析和评价。
Matplotlib——经典之选
matplotlib/matplotlib
[1]
PyPI
:
Matplotlib
[2]
一句话推荐
:如果你只需要一个包来制作静态可视化,选它。
我的看法
:Matplotlib 已有 22 年历史,尽管其语法复杂,但它依然是下载量最高的 Python 数据可视化包。它不仅支持 Seaborn 等工具,还能让你实现任何静态图,只要你愿意投入精力。
Bokeh——美丽但复杂
bokeh/bokeh
[3]
PyPI
:
Bokeh
[4]
一句话推荐
:如果你需要完全控制动态可视化,且不介意多写代码,选它。
我的看法
:Bokeh 能制作漂亮的交互式图表,但需要大量代码和示例学习。不过,其稳定性和文档近年来大幅提升,值得一试。
Plotly——企业首选
plotly/plotly.py
[5]
PyPI
:
Plotly
[6]
一句话推荐
:如果你需要快速制作高度动态的可视化,选它。
我的看法
:Plotly 的 API 简单且能生成出色的交互图表。虽然开源,但主要由 Plotly 公司维护。
Seaborn——统计友好
mwaskom/seaborn
[7]
PyPI
:
Seaborn
[8]
一句话推荐
:如果你需要统计可视化,选它。
我的看法
:Seaborn 提供美观的统计图表,且易于使用。如果不够,还可以用 Matplotlib 微调。但贡献者数量在 2024 年停滞,令人担忧。
Altair——优雅的语法
vega/altair
[9]
PyPI
:
Altair
[10]
一句话推荐
:如果你注重 API 的一致性和优雅性,选它。
我的看法
:Altair 基于 Vega-Lite 的高级图形语法,提供清晰的思维模型,支持交互和静态图表,是一个强大的竞争者。
Plotnine——R 风格的语法
has2k1/plotnine
[11]
PyPI
:
Plotnine
[12]
一句话推荐
:如果你喜欢 R 的 ggplot2,但需要用 Python,选它。
我的看法
:Plotnine 将 ggplot2 引入 Python,下载量近年来激增,可能不仅仅是怀旧。
Holoviews——多后端集成
holoviz/holoviews
[13]
PyPI
:
Holoviews
[14]
一句话推荐
:如果你需要高效生成静态和动态可视化,选它。
我的看法
:Holoviews 通过元数据自动化可视化,支持 Matplotlib 和 Bokeh 渲染,但 hvPlot 的抽象级别更高。
Hvplot——高级集成
holoviz/hvplot
[15]
PyPI
:
Hvplot
[16]
一句话推荐
:如果你需要静态和动态可视化,且代码简洁,选它。
我的看法
:Hvplot 提供高级 API,支持多后端,但调试时可能需要深入研究多个库的文档。
Datashader——大数据集
holoviz/datashader
[17]
PyPI
:
Datashader
[18]
一句话推荐
:如果你需要可视化海量数据,选它。
我的看法
:Datashader 擅长将大数据集转化为精美可视化,但需要理解其管道概念。
Pyvista——3D 可视化
pyvista/pyvista
[19]
PyPI
:
Pyvista
[20]
一句话推荐
:如果你需要 3D 可视化,选它。
我的看法
:PyVista 是 3D 和科学可视化的代表,足够 Python 化,不仅仅是 VTK 的集成。
参考资料
[1]
matplotlib/matplotlib:
https://github.com/matplotlib/matplotlib
[2]
Matplotlib:
https://pypi.org/project/Matplotlib
[3]
bokeh/bokeh:
https://github.com/bokeh/bokeh
[4]
Bokeh:
https://pypi.org/project/Bokeh
[5]
plotly/plotly.py:
https://github.com/plotly/plotly.py
[6]
Plotly:
https://pypi.org/project/Plotly
[7]
mwaskom/seaborn:
https://github.com/mwaskom/seaborn
[8]
Seaborn:
https://pypi.org/project/Seaborn
[9]
vega/altair:
https://github.com/vega/altair
[10]
Altair:
https://pypi.org/project/Altair
[11]
has2k1/plotnine:
https://github.com/has2k1/plotnine
[12]
Plotnine:
https://pypi.org/project/Plotnine
[13]
holoviz/holoviews:
https://github.com/holoviz/holoviews
[14]
Holoviews:
https://pypi.org/project/Holoviews
[15]
holoviz/hvplot:
https://github.com/holoviz/hvplot
[16]
Hvplot:
https://pypi.org/project/Hvplot
[17]
holoviz/datashader:
https://github.com/holoviz/datashader
[18]
Datashader:
https://pypi.org/project/Datashader
[19]
pyvista/pyvista:
https://github.com/pyvista/pyvista
[20]
Pyvista:
https://pypi.org/project/Pyvista