Python可视化技术之plotnine

plotnine简介

Python语言plotnine包类似于R语言ggplot2包,两者的使用方式和语法相似

plotnine优点

plotnine的代码简洁且易学、绘制的图流畅大方即很少的代码实现不同图形的绘制

plotnine安装

plotnine可用pip包管理工具、conda环境、mamba环境进行plotnine的安装

  • pip安装命令为:pip install plotnine -i https://pypi.tuna.tsinghua.edu.cn/simple
  • conda环境命令为:conda install plotnine
  • mamba环境命令为:mamba install plotnine

plotnine导入

plotnine在代码中须先导入才能用其函数绘图,导入代码为:from plotnine import *

plotnine底层

plotnieggplot2底层都基于Wilkinson《Grammar of Graphics》一书中的图形语法

plotnine构成

Plot = Data + Aesthetics + Geometry + Facets +Statistics+Coordinates+Theme

  • plot(图)主要是绘制出的图
  • Data(数据集)主要是 data frame
  • Aesthetics(美学映射)主要是x,y坐标轴、颜色、大小等图形属性
  • Geometry(几何对象)主要是柱形图、直方图、散点图、线图、密度图等
  • Facets(分面)主要是指将绘图窗口划分为若干个子窗口,以生成不同子集的图形
  • Statistics(统计变换)主要是各种不同统计变换函数,如:stat_smooth()平滑变换
  • Coordinates(坐标系)主要是生成坐标系,比如:coord_cartesian() 笛卡尔坐标系
  • Theme(主题)主要是用来修改绘图的背景主题,如:theme_dark() 黑暗背景主题

plotnine函数

ggplot()底层绘图函数,包括data frame、color、size、shape等
geom_xxx()不同图层绘制函数,主要包括geom_point()、geom_line()等
stat_xxx()统计变换函数,包括stat_smooth()、stat_ecdf()、stat_qq()等
scale_xxx()度量调整函数,主要包括color(颜色)、size、shape(形状)
coord_xxx()笛卡尔坐标系函数,暂时不能实现极坐标系和地理空间坐标系
facet_xxx()分面系统函数,包括了按行、按列、按网格等形式分面的绘图
guides_xxx()图例调整函数,主要包括了连续型、离散型两种类型的图例
theme()主题设置函数,主要包括了图表背景颜色、网格线的间隔与颜色等

plotnine语法

语法为:(ggplot()+geom_xxx()+stat_xxx()+facet_xxx()+scale_xxx()+theme())

plotnine扩展

修改虚拟环境安装包的默认路径

找到虚拟环境对应的lib/site.py文件,修改其中的user_site(用户包)和user_base(用户脚本)

修改python大环境安装包的默认路径

找到python环境下lib/site.py文件,修改其中的user_site(用户包)和user_base(用户脚本)

Pycharm中找不到已经正常安装的三方包

重启Pycharm IDE,让其重新检索加载新安装的三方包

Jupyter Notebook打不开

重启电脑或者百度相关教程即可解决

plotnine问题

ReadTimeoutError读取超时错误

  • 产生场景
Pycharm中通过pip安装plotnine时发生 
  • 错误原因
pip._vendor.urllib3.exceptions.ReadTimeoutErrorHTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
  • 解决办法
# 设置安装找寻的等待时间为100ms
pip install --default-timeout=100 plotnine

ModuleNotFoundError模块未找到错误

  • 产生场景
Pycharm中通过pip成功安装plotnine后,导入时却报错提示没有此包 
  • 错误原因
ModuleNotFoundError: No module named 'plotnine'
  • 解决办法
# pip安装的包会在lib/site_packages(原生Python)或在envs/lib/site_packages(虚拟环境)
使用pip show packagename(pip show plotnine) 查看包的位置,然后根据包选择对应Python解释器

PackagesNotFoundError包未找到错误

  • 产生场景
在Anaconda PowerShell Prompt(anaconda3)通过aconda环境安装plotnine,报通道无此包的错误
  • 错误原因
The following packages are not available from current channels:  - plotnine
  • 解决办法
# 首先登录conda官网(https://anaconda.org/),然后在搜索框搜索plotnine包,最后官网提供地址安装
# 如果此命令一直重复卡死执行,可用 Ctrl + C 强制中断命令执行后,再尝试使用其它的地址进行安装 
conda install -c "conda-forge/label/cf201901" plotnine

UnicodeDecodeError编码错误

  • 产生场景
在Pycharm中执行plotnine的代码时,报Unicode编码错误
  • 错误原因
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 8: invalid continuation byte
  • 解决办法
# 方法一:通过plotnine对字符编码进行设置
theme(text=element_text(family=['SimHei', 'Arial Unicode MS'])

# 方法二:通过matplotlib对字符编码进行设置
matplotlib.rcParams['axes.unicode_minus']=False # 用来正常显示负号
matplotlib.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签

plotnine踩坑

plotnine的下载建议用mamba,因为condapip易导致matplotlibplotnine冲突

plotnine语录

—— plotnine开发者的语录一

plotnine一开始是为了改进ggpy中的伸缩功能,它的正式名称是“python的ggplot”。这是一个更大目标的一部分,即把这个包发展成一个支持完整绘图语法的包。事实证明,要想拥有一个图形语法系统,我们必须重新开始。

—— plotnine开发者的语录二

R编程语言有一个丰富的统计生态系统,ggplot2可以轻松地利用它。在plotnine中,我们尽了最大努力与科学python生态系统的其余部分整合在一起。尽管我们觉得我们可以在这个集成上做得更多,但是尽管语言存在差异,熟悉ggplot2的用户应该对使用plotnine感到舒适和高效。

—— Hadely(多产的R包开发者)对Wilkinson图形语法的描述语录

一张统计图形就是从数据到几何对象(geometric object, 缩写为geom, 包括点、线、条形等)的图形属性(aesthetic attributes,缩写为aes, 包括颜色、形状、大小等)的一个映射。此外, 图形中还可能包含数据的统计变换(statistical transformation, 缩写为stats), 最后绘制在某个特定的坐标系(coordinate system, 缩写为coord)中, 而分面(facet, 指将绘图窗口划分为若干个子窗口)则可以用来生成数据中不同子集的图形。

plotnine资源

mamba官网
ggplot2官网
ggplot2入门
ggplot2指南
plotnine官网
Anaconda官网
plotnine官网的示例
图像语法的介绍文档
CSDN的plotnine教程一
CSDN的plotnine教程二
程序员客栈上的plotnine教程
Python数据可视化之美的示例

字由字体免费下载
word中嵌入好看的代码
word代码生成网站
CSDN解决pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过往已是曾经

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值