Github 4.3k star,一款超好用的 Python 库--plotnine!
隔壁工位那个小王突然喊我:“哥,你会不会用 plotnine?我看这玩意儿 GitHub 四千多 star 了,听说超好用!”我当时还愣了下,心想你是不是说错名字了,结果还真没错,就是那个 Python 的 plotnine。
其实 plotnine 这库,我最早用是在去年做数据分析的时候,手里一堆 CSV 文件要可视化,matplotlib 那堆 set_title、set_xlabel 写得我头大。后来同事给我推荐 plotnine,说是“Python 里的 ggplot2”,我一开始还不信,后来用了才发现,真香。
plotnine 到底是个啥?
简单说,就是你要是做数据可视化,想要优雅点、代码少点、样式顺眼点,plotnine基本上就能满足你。和 matplotlib、seaborn 那种传统风格不一样,它主打一个语法糖,就是链式语法跟写句子一样顺滑,灵感直接来自 R 语言的 ggplot2。
那时候我数据一读进来,直接:
from plotnine import ggplot, aes, geom_line
import pandas as pddf = pd.DataFrame({
'x': range(10),
'y': [i**2for i in range(10)]
})
p = (ggplot(df) + aes('x', 'y') + geom_line())
print(p)
真的就是这么写。你不用再去关心 ax 什么的,plotnine 讲究一个“语义化”,你代码一排开自己都觉得赏心悦目——有点夸张哈,但真是舒服。
为什么这么多人用 plotnine?
你看现在数据分析圈,ggplot2 那套思想已经是“人类文明结晶”级别了。你习惯了 ggplot2,再用 plotnine 几乎零上手成本。比如什么+ geom_point()、+ geom_line(),一加就出效果。那天我帮同事画个分组柱状图,也是两行搞定:
from plotnine import ggplot, aes, geom_bar
import pandas as pddf = pd.DataFrame({
'category': ['A', 'B', 'A', 'B'],
'value': [1, 2, 3, 4]
})
plot = (
ggplot(df) +
aes(x='category', y='value', fill='category') +
geom_bar(stat='identity', position='dodge')
)
print(plot)
不用琢磨 legend、label,plotnine 都给你安排得明明白白。
说实话,plotnine 最大的爽点就是“直观”,但是也有坑,比如有些高级自定义操作没 matplotlib 那么自由。你要是画很特别很花哨的图,可能还得 fallback 回去用 matplotlib,但日常业务场景真的够用,特别适合报表、分析、科研。
哦对了,plotnine 其实底层还是靠 matplotlib 绘图,只不过把那堆繁琐的东西包起来,让你用起来“像写 SQL 一样可视化”,你说妙不妙?就是刚开始上手会觉得,报错信息有时候很抽象,但习惯后,基本你都能猜出来是哪块写错了。
前几天有个妹子找我说想画 FacetGrid(分面图),我说用 plotnine 啊,举个简单例子:
from plotnine import ggplot, aes, geom_point, facet_wrap
import pandas as pddf = pd.DataFrame({
'x': range(20),
'y': [i**0.5for i in range(20)],
'group': ['A']*10 + ['B']*10
})
p = (
ggplot(df) +
aes('x', 'y') +
geom_point() +
facet_wrap('~group')
)
print(p)
直接 facet_wrap 一下,不用管 subplot 怎么拆,plotnine 自动帮你按组分面。
反正你要是写 Python 做数据可视化,不想每次都在那画轴、调参数,plotnine 绝对值得一试。你可以直接 pip 装:
pip install plotnine
然后多试几个例子,慢慢你就会发现,这玩意真的能提升幸福感。至于官网文档嘛,其实写得还挺全,直接搜“plotnine documentation”就行。
-END-
我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领