Python可视化库——plotnine学习和基本使用

plotnine简介

plotnine学习背景

作为一名python的初学者,做数据分析的时候学的也都是python自带的matplotlib和seaborn,后来公司的一个学习R语言的同事拿R语言的ggplot2作图,做的又快又好,他给我推荐了python的plotnine库,使用方式与R语言很相似,做出来的图也很好看,我试了一下,果真如此。然后趁有时间就整理一下plotnine的绘图,如果有什么不严谨或者不对的地方请大家指出来,谢谢。如果有更多想学的可以点击:plotnine官网

plotnine的优点

  • 代码简洁,易学习看懂
  • 绘制的图流畅大方,不需要很多的代码就可以绘制很不错的图

plotnine的使用

plotnine安装导入

我们可以用pip直接安装

pip install plotnine

导入plotnine库

from plotnine import *

基本和常用语法(目前我用到过的)

基本语法

创建一个图形对象

基本语法 Value
ggplot 创建对象
aes 数据中的变量到图形成分的映射

几何对象geom
几何对象geom负责每个数据点的可视化,geom_后面的部分决定几何对象的类型,每个图至少添加一个几何对象,不同的视觉对象由aes控制映射

基本语法 Value
geom_area 面积图
geom_bar 条形图(饼图)
geom_blank 空的几何对象,什么也不画
geom_histogram 直方图
geom_line 线图
geom_point 点图
geom_map 地图
geom_boxplot 箱线图
geom_violin 小提琴图

统计变化stat
统计变换再数据被提取出来之前对数据进行聚合和其他计算,用stat_确定对数据进行的计算类型,不同类型的计算统计产生不同的图形结果

基本语法 Value
stat_abline 添加线条,用斜率和截距表示
stat_bin 分割数据,然后绘制直方图
stat_identity 绘制原始数据,不进行统计变化

标度函数scale
标度函数scale是对数据图形的调整,通过scale_这样的函数将获取的数据进行调整以改变图形的长度、颜色、大小和形状。

基本语法 Value
scale_x_date x轴标签是日期
scale_x_datetime x轴标签是时间
scale_y_date y轴标签是日期
scale_y_datetime y轴标签是时间
xlim x轴范围
ylim y轴范围

标签Labels
这个就不用解释了吧

基本语法 Value
labs 设置所有的标签和标题
xlab 设置x轴标签
ylab 设置y轴标签
ggtitle 创建图表标题

完整公式

  • 一个括号
    (
  • 基本公式:用ggplot创建图形,geom_创建几何对象
    ggplot(df,aes())+geom_())
  • 调整公式
    +scale+theme······
  • 最后一个括号
    )
    例如:

绘制图像(最基本的图像)

条形图

我们先对比一下
plotnine绘图
在这里插入图片描述
matplotlib绘图
在这里插入图片描述
这样就可以看出plotnine绘图确实比matplotlib绘图要好看多了,而且简洁大气
我们先先导入我们需要的库

from plotnine import *
import pandas as pd

我们导入数据,我这边是已经处理过了的数据,为方便大家理解,我先把原始数据转为字典,然后直接转为DataFrame

median_age_dict={
   
    'Country': ['New Zealand','Spain','Ireland','Israel','Denmark','Norway','Netherlands','Australia','Italy','Sweden'],
    'Age': [39.0, 37.0, 35.0, 34.0, 34.0, 34.0, 34.0, 34.0, 34.0, 34.0]
}
median_age=pd.DataFrame(median_age_dict)

我们看一下数据
在这里插入图片描述
然后我们开始绘图

(
ggplot(median_age,aes(x='Country',y='Age'))#创建图象,传入数据来源和映射
+ geom_bar()#建立几何对象,画直方图
)

这时候会报错,因为直方图需要设置数据统计方式,需要用stat这个参数在geom_bar里面传入统计方式,统计方式为identity,即用数据表原有的数据进行统计

(
ggplot(median_age,aes(x='Country',y='Age'))#创建图象,传入数据来源和映射
+ geom_bar(stat='identity')#建立几何对象,画直方图
)

在这里插入图片描述
我们可以看到这时候已经绘制出一幅纵向直方图,我们想要得到我们需要的图,我们要进行以下的处理

  • 不同国家画不同的颜色
  • 每一个国家添加数据标签
  • 将纵向直方图转置变为横向直方图
  • x轴没有按照顺序排序,需要让它按照数据顺序排序
  • 每一个条形图的粗细需要调整
  • **添加图表标题 **

我们一个一个来
将不同国家填充不同的颜色在映射里面添加fill参数可以将数据以颜色区分

(
ggplot(median_age,aes(x='Country',y='Age',fill='Country'))#创建图象,传入数据来源和映射
+ geom_bar(stat='identity')#建立几何对象,画直方图
)

在这里插入图片描述
这样我们就将不同的国家都填充上了不同的颜色
然后我们给他添加数据标签,添加数据标签需要用geom_text文本来绘图,同样需要添加映射

(
ggplot(median_age,aes(x='Country',y='Age',fill='Country'))#创建图象,传入数据来源和映射
+ geom_bar(stat='identity')#建立几何对象,画直方图
+ geom_text(aes(x='Country',y='Age',label='Age'))#添加数据标签
)

在这里插入图片描述
但是这个数据标签的位置不太好,我们要让它往上移一下,利用nudge_y参数

(
ggplot(median_age,aes(x='Country',y='Age',fill='Country'))#创建图象,传入数据来源和映射
+ geom_bar(stat='identity')#建立几何对象,画直方图
+ geom_text(aes(x='Country',y='Age',label=
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值