Python 第三方库:plotnine(类 ggplot 的 Python 数据可视化库)

plotnine 是 Python 中一个基于 ggplot2 风格的可视化库,使用 Grammar of Graphics(图形语法)理念,能够通过组合图层、几何对象、统计变换和坐标系统等元素创建高质量图表。它封装了 Matplotlib 与 pandas,支持灵活的数据驱动绘图,非常适合进行统计可视化与分析报告制作。

安装:

nginx 复制代码
pip install plotnine

常见应用场景:

(1)统计数据可视化:柱状图、折线图、散点图、箱线图、直方图等。

(2)探索性数据分析(EDA):快速绘制数据分布和趋势,发现潜在规律。

(3)数据报告与科研论文:利用图层叠加和主题系统生成高质量图形。

(4)多维数据可视化:通过分面(facet)实现分组绘图。

(5)自动化绘图:结合 pandas DataFrame 自动映射数据列到图形属性。

◆ ◆ ◆

核心概念

1、ggplot 对象

绘图的基础对象,通常以 ggplot(data, aes(...)) 创建,其中 data 是 pandas DataFrame,aes 指定映射关系(x、y、颜色、大小等)。

2、几何对象(Geom)

图形的基本元素,如 geom_line(), geom_point(), geom_bar() 等,用于指定图表类型。

3、统计变换(Stat)

对数据进行统计计算后再绘制,例如 stat_smooth() 用于回归拟合,stat_bin() 用于直方图统计。

4、图层叠加

可以通过 + 将多个图层、坐标、标签等叠加组合,生成丰富图形。

5、坐标系统与主题

coord_cartesian()、coord_flip() 等用于控制坐标。

theme() 控制整体风格,如字体、标题、网格线等

◆ ◆ ◆

应用举例

例 1:基本散点图

python 复制代码
import pandas as pdfrom plotnine import ggplot, aes, geom_point
df = pd.DataFrame({'x': [1,2,3,4], 'y':[10, 15, 13, 17]})p = ggplot(df, aes(x='x', y='y')) + geom_point()print(p)

例 2:折线图

python 复制代码
import pandas as pdfrom plotnine import ggplot,geom_line,aes
df = pd.DataFrame({'x': [1,2,3,4], 'y':[10, 15, 13, 17]})
p = ggplot(df, aes('x','y')) + geom_line()print(p)

例 3:分组绘图

python 复制代码
import pandas as pdfrom plotnine import ggplot,geom_line,aes
df = pd.DataFrame({    'x': [1,2,3,1,2,3],    'y': [10,12,14,15,18,20],    'group': ['A','A','A','B','B','B']})
p = ggplot(df, aes('x','y', color='group')) + geom_line()print(p)

例 4:直方图

python 复制代码
import pandas as pdfrom plotnine import ggplot,geom_histogram,aes
df = pd.DataFrame({'value': [1,2,2,3,3,3,4,4,5]})p = ggplot(df, aes('value')) + geom_histogram(binwidth=1)print(p)

例 5:分面(Facet)

python 复制代码
import pandas as pdfrom plotnine import ggplot,facet_wrap,aes,geom_point
df = pd.DataFrame({'value': [1,2,2,3,3,3,4,4,5]})p = ggplot(df, aes('x','y')) + geom_point() + facet_wrap('~group')print(p)

◆ ◆ ◆

常用函数与类速览

ggplot(data, aes(...))

创建基础绘图对象。

参数:

data:pandas DataFrame。

aes(...):映射关系,如 x、y、color、size。

返回:ggplot 对象。

geom_point()

绘制散点图。

参数:可选映射 aes。

返回:GeomPoint 对象。

geom_line()

绘制折线图。

参数:可选映射 aes。

返回:GeomLine 对象。

geom_bar()

绘制柱状图。

参数:可选映射 aes。

返回:GeomBar 对象。

geom_histogram(binwidth=1)

绘制直方图。

参数:binwidth 指定分箱宽度。

返回:GeomHistogram 对象。

facet_wrap('~col')

按列分面绘图。

参数:分组列名。

返回:FacetWrap 对象。

theme()

设置图形风格。

参数:字体、标题、网格线、边距等。

返回:Theme 对象。

◆ ◆ ◆

补充说明

(1)plotnine 与 pandas 紧密集成,所有数据处理建议先在 DataFrame 中完成。

(2)所有图层、统计变换均可用 + 运算符叠加。

(3)支持 ggplot2 风格,但底层依赖 Matplotlib,输出可作为 Matplotlib figure 使用。

(4)对复杂图表,建议使用图层组合与 facet 分面机制,便于维护和重用。

📘 小结

plotnine 是 Python 中 ggplot2 风格的可视化库,通过图层、几何对象和统计变换组合实现高度可定制的图表。它与 pandas 紧密结合,适合数据分析、探索性分析及报告生成。通过直观的语法和分面机制,用户能够快速创建专业、多面板、可复用的图形,提高数据可视化效率和可读性。

"点赞有美意,赞赏是鼓励"

相关推荐
MoRanzhi12032 小时前
第6篇(中)· 使用 PyQt5 实现 2048 高性能计算版:无头后台求解与三档运行模式
python·pyqt·数据持久化·多进程·进程间通讯·后台任务·断点续跑
Metaphor6924 小时前
Python 自动化办公:如何轻松在 PDF 中导入与导出表单数据
python·pdf·自动化
H.莓飛11 小时前
【数据结构】排序_OJ题(一):计数、桶与排序后的处理
java·开发语言·数据结构
wangchunyu11411 小时前
JAVA AQS与Lock实现原理(含CAS)
java·开发语言·word
爱喝水的鱼丶12 小时前
SAP-ABAP:ECC→S/4HANA ABAP 迁移升级指南——程序改造、语法兼容与性能优化 导语
运维·开发语言·性能优化·sap·abap·经验交流·开发交流
小灰灰搞电子12 小时前
Rust+Slint 实现FTP客户端调试助手源码分享
开发语言·后端·rust
外收内放12 小时前
面向对象高级(实战案例)
开发语言·python·学习
专业程序开发源13 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
FPGA小迷弟13 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
c++·python·ai·plotly·django·ai编程·claude
卷无止境13 小时前
面向arm64桌面客户端开发全景:语言、框架与生态
后端·python