今天给大家介绍一个非常好用的Python语言可视化工具包-plotnine,让你轻松绘制R语言中的统计图形~~
plotnine包介绍
plotnine 是Python语言中的一个可视化工具包,它基于R语言中的ggplot2库进行了重新实现。plotnine提供了一种简洁而强大的语法,可以用于创建高质量的统计图形。
使用plotnine,你可以轻松地创建各种类型的图形,包括散点图、折线图、柱状图、箱线图等。它支持对数据进行分组、筛选和变换,可以添加标签、标题、图例等元素,还可以自定义颜色、线型、点型等图形属性。
plotnine的语法类似于ggplot2,它使用了一种称为"Grammar of Graphics"的思想。这种思想认为,图形由数据、映射和图形元素组成。数据是要可视化的原始数据,映射是将数据映射到图形属性上,图形元素是构成图形的基本单元,如点、线、面等。
安装方法
可通过使用pip或者conda工具完成plotnine包的安装:
#Using pip
pip install plotnine # 最常用方法
pip install 'plotnine[all]' #安装依赖拓展包
#Or using conda
conda install -c conda-forge plotnine
基础绘图案例
下面是一个简单的示例,展示了如何使用plotnine创建一个散点图:
from plotnine import *
# 创建一个数据集
data = pd.DataFrame({'x': [1, 2, 3, 4, 5], 'y': [2, 4, 6, 8, 10]})
# 创建散点图
ggplot(data, aes(x='x', y='y')) + \
geom_point()
上述代码首先导入了plotnine库,然后创建了一个包含x和y两列数据的DataFrame。接下来,使用ggplot函数创建了一个基础图形对象,并使用aes函数指定了x和y的映射关系。最后,使用geom_point函数添加了散点图的图形元素,此外,还可以看出,可以直接使用pandas数据类型进行图形的直接绘制。
除了散点图,plotnine还支持许多其他类型的图形,如折线图、柱状图、箱线图等。你可以使用不同的函数来创建不同类型的图形元素,并通过调整参数来自定义图形的样式。
其他可视化案例
- plotnine.geoms.geom_tile()函数
flights = pd.read_csv('data/flights.csv')
months = flights['month'].unique() # Months ordered January, ..., December
flights['month'] = pd.Categorical(flights['month'], categories=months)
#可视化绘制
(ggplot(flights, aes('factor(year)', 'month', fill='passengers'))
+ geom_tile(aes(width=.95, height=.95))
+ geom_text(aes(label='passengers'), size=9)
)
geom_tile()函数绘制结果- plotnine.geoms.geom_smooth()函数
import pandas as pd
import numpy as np
from plotnine import (
ggplot,
aes,
geom_point,
geom_smooth,
labs
)
from plotnine.data import mpg
#可视化绘制
(
ggplot(mpg, aes(x='displ', y='hwy', color='factor(drv)'))
+ geom_point()
+ geom_smooth(method='lm')
+ labs(x='displacement', y='horsepower')
)
geom_smooth()函数绘制案例- plotnine.geoms.geom_violin()函数
import pandas as pd
import numpy as np
import pandas.api.types as pdtypes
from plotnine import (
ggplot,
aes,
stage,
geom_violin,
geom_point,
geom_line,
geom_boxplot,
scale_fill_manual,
theme,
theme_classic
)
#构建数据
np.random.seed(123)
n = 20
mu = (1, 2.3)
sigma = (1, 1.6)
before = np.random.normal(loc=mu[0], scale=sigma[0], size=n)
after = np.random.normal(loc=mu[1], scale=sigma[1], size=n)
df = pd.DataFrame({
'value': np.hstack([before, after]),
'when': np.repeat(['before', 'after'], n),
'id': np.hstack([range(n), range(n)])
})
df['when'] = df['when'].astype(pdtypes.CategoricalDtype(categories=['before', 'after']))
#可视化绘制
lsize = 0.65
fill_alpha = 0.7
(ggplot(df, aes('when', 'value', fill='when'))
+ geom_violin(m1, style='left-right', alpha=fill_alpha, size=lsize, show_legend=False)
+ geom_point(m2, color='none', alpha=fill_alpha, size=2, show_legend=False)
+ geom_line(m2, color='gray', size=lsize, alpha=0.6)
+ geom_boxplot(width=shift, alpha=fill_alpha, size=lsize, show_legend=False)
+ scale_fill_manual(values=['dodgerblue', 'darkorange'])
+ theme_classic()
+ theme(figure_size=(8, 6))
)
geom_violin()函数绘制示例- plotnine.geoms.geom_map()函数绘制地图
这一个案例直接给出可视化结果,感兴趣的读者可以自行探索:如下:
geom_map()函数绘制案例更多关于plotnine包的语法和绘图案例,可参考plotnine包官网[1]
总结
🔍plotnine虽然是变相的使用Python语言对ggplot2包绘图函数的封装,但其也继承了两者的优点:
- 易学易用:类似ggplot2的语法,上手简单,数据可视化不再困难。
- 高度定制:支持各种图表类型,从散点图到箱线图,满足你的一切需求。
- 美观主题:可自定义图表外观,打造与众不同的可视化风格。
- 无缝整合:数据框为数据输入,与pandas完美结合,数据处理更便捷。
总之,plotnine是一个功能强大且易于使用的可视化工具包,它可以帮助你快速创建高质量的统计图形,并进行数据的可视化分析。
系统学习可视化
对于想系统学习数据可视化的同学,也可以加入我的数据可视化系列课程,里面有超多详细的数据可视化课程以供选择~~
参与课程(可点击),和超400位可视化爱好者一起学习进步哦,
或者点击文末 阅读原文 进行了解。现在参与还有限时优惠活动呢~~
荐号
如果大家喜欢一些商务插图和新闻可视化等相关内容,可关注我们的小号:一点数语。一点数语 (yidianshuyu),专注于数据领域的经验分享,畅聊与数据有关的学术、商业、新闻等有趣、有用的资源和学习心得、感悟。
推荐阅读

参考资料
[1]plotnine包官网: https://plotnine.readthedocs.io/en/v0.12.3/index.html。