Py学习  »  Python

plotnine,打死不学R语言, 我可以用Python到40岁.....

DataCharm • 2 年前 • 224 次点击  

今天给大家介绍一个非常好用的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': [12345], 'y': [246810]})

# 创建散点图
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。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/162761