腾讯课堂 | Python网络爬虫与文本数据分析

同样的基本作图任务,plotnine比matplotlib和seaborn代码量少,更美观。所以我又重新发一遍,大家可以先收藏起来,后面总有用到的时候~

R语言的ggplot2绘图能力超强,python虽有matplotlib,但是语法臃肿,使用复杂,入门极难,seaborn的出现稍微改善了matplotlib代码量问题,但是定制化程度依然需要借助matplotlib,使用难度依然很大。

而且咱们经管专业学编程语言,一直有一个经久不衰的问题-“学数据分析,到底选择R还是Python”。通过plotnine这个库,你就可以在python世界中体验下R语言的新奇感,体验可视化之美,如果着迷上瘾,再学R也不迟。

plotnine包,可以实现绝大多数ggplot2的绘图功能,两者语法十分相似,R和Python的语法转换成本大大降低。

  • plotnine文档 https://plotnine.readthedocs.io/en/latest/
  • R语言ggplot2文档 https://ggplot2.tidyverse.org/reference/index.html

安装

pip install plotnine

准备数据

from plotnine.data import mpg

#dataframempg.head()
manufacturer model displ year cyl trans drv cty hwy fl class
0 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
1 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
2 audi a4 2.0 2008 4 manual(m6) f 20 31 p compact
3 audi a4 2.0 2008 4 auto(av) f 21 30 p compact
4 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact

快速作图qplot

我们先直接看最简单好用的快速作图函数qplot(x, y, data)

  • 横坐标displ
  • 纵坐标cty
  • 数据mpg
from plotnine import qplot

qplot(x='displ',       y='cty',      data=mpg)

ggplot图层

qplot是快速作图函数,如果想让图更好看,进行私人订制,那么我们需要进行图层设计

首先设置ggplot图层(相当于买了一个高级画布),

  • 数据mpg
  • 横坐标x轴为displ
  • 纵坐标y轴cty

在plotnine中,变量所对应的数据均可通过字段名调用

from plotnine import ggplot, geom_point, aes

ggplot(aes(x='displ', y='cty'), mpg)

图层叠加

我们可以看到,已经绘制出一个空的ggplot图层,x轴为displ,y轴为cty。

接下来我们给这个图层上加上数据对应的散点,使用geom_point()直接追加在ggplot图层之上即可。

(    ggplot(aes(x='displ', y='cty'), mpg)    + geom_point())

color

在上图中,散点是没有区分每辆车的气缸数cyl。

在geom_point()中,我们可以按照气缸数cyl分门别类,按照颜色显示出来

(    ggplot(aes(x='displ', y='cty'), mpg)    + geom_point(aes(color='cyl')))

上图挺好看的,有时候需要绘制的字段是离散型数值,但是上色后可能不够明显,需要声明该字段为离散型。这时候用factor()来告诉plotnine,这个字段是离散型数值

(    ggplot(aes(x='displ', y='cty'), mpg)    + geom_point(aes(color='factor(cyl)')) )



size

有时候为了增加可视化显示的维度数,还可以考虑加入点的大小size

(    ggplot(aes(x='displ', y='cty'), mpg)    + geom_point(aes(size='hwy')))

梯度色

如果你想自己设置颜色的梯度,可以通过scale_color_gradient设置

from plotnine import scale_color_gradient

(    ggplot(aes(x='displ', y='cty'), mpg)    + geom_point(aes(color='hwy'))    + scale_color_gradient(low='blue', high='red'))

条形图

plotnine中可绘制的图有很多,刚刚已经讲了散点图,接下来我们看看plotnine中的条形图。

首先准备一下数据

import pandas as pd

df = pd.DataFrame({    'variable': ['gender', 'gender', 'age', 'age', 'age', 'income', 'income', 'income', 'income'],    'category': ['Female', 'Male', '1-24', '25-54', '55+', 'Lo', 'Lo-Med', 'Med', 'High'],    'value': [60, 40, 50, 30, 20, 10, 25, 25, 40],})df['variable'] = pd.Categorical(df['variable'], categories=['gender', 'age', 'income'])df['category'] = pd.Categorical(df['category'], categories=df['category'])

df
variable category value
0 gender Female 60
1 gender Male 40
2 age 1-24 50
3 age 25-54 30
4 age 55+ 20
5 income Lo 10
6 income Lo-Med 25
7 income Med 25
8 income High 40
from plotnine import ggplot, aes, geom_text, position_dodge, geom_point

#调整文本位置dodge_text = position_dodge(width=0.9)                              # new

(    ggplot(df, aes(x='variable',                    y='value',                    fill='category')) #类别填充颜色    + geom_col(position='dodge',                show_legend=False)   # modified    + geom_text(aes(y=-.5, label='category'),                          # new                position=dodge_text,                color='gray',  #文本颜色                size=8,   #字号                angle=30, #文本的角度                va='top')

 + lims(y=(-5, 60))                                                 # new)

from plotnine.data import economics_long

economics_long.head()
date variable value value01
0 1967-07-01 pce 507.4 0.000000
1 1967-08-01 pce 510.5 0.000266
2 1967-09-01 pce 516.3 0.000764
3 1967-10-01 pce 512.9 0.000472
4 1967-11-01 pce 518.1 0.000918
from plotnine import ggplot, aes, geom_line

(    ggplot(economics_long, aes(x='date', y='value01', color='variable'))    + geom_line())

plotnine目前已经支持绝大多数ggplot2,但是文档方面没有ggplot2全,所以学习plotnine时可以参考ggplot2。

  • plotnine文档 https://plotnine.readthedocs.io/en/latest/
  • R语言ggplot2文档 https://ggplot2.tidyverse.org/reference/index.html

往期文章

[更新] Python网络爬虫与文本数据分析 rpy2库 | 在jupyter中调用R语言代码plydata库 | 数据操作管道操作符>>tidytext | 耳目一新的R-style文本分析库七夕礼物 | 全网最火的钉子绕线图制作教程读完本文你就了解什么是文本分析文本分析在经管领域中的应用概述  综述:文本分析在市场营销研究中的应用plotnine: Python版的ggplot2作图库小案例: Pandas的apply方法  stylecloud:简洁易用的词云库 用Python绘制近20年地方财政收入变迁史视频  Wow~70G上市公司定期报告数据集漂亮~pandas可以无缝衔接Bokeh  YelpDaset: 酒店管理类数据集10+G  

公众号后台回复关键词【plotnine入门】即可下载本文数据代码

分享”和“在看”是更好的支持!

r语言ggplot2 多线图绘制图例_plotnine: Python版的ggplot2作图库相关推荐

  1. r语言ggplot2 多线图绘制图例_R语言绘制箱线图示例

    R语言绘制箱线图 箱线图(又称盒须图)是常见的统计图形之一,通过绘制连续型变量的五数总括,即最小值.下四分位数(第25百分位数).中位数(第50百分位数).上四分位数(第75百分位数)以及最大值,描述 ...

  2. R语言绘制箱线图并添加相关显著性

    箱线图(又称盒须图)通过绘制连续型变量的五数总括,即最小值.下四分位数(第25百分位数).中位数(第50百分位数).上四分位数(第75百分位数)以及最大值,描述了连续型变量 的分布. "它主 ...

  3. 利用R语言实现箱线图的绘制与美化(正态分布随机数生成、显著性检验、误差线添加、图例、背景更改)

    问题:按照正态分布随机生成A(平均值= 50,sd = 3),B(平均值= 45,sd = 2),C(平均值= 40,sd = 5)和D(平均值= 52)作为4种甜瓜的产量数据 ,sd = 2),并绘 ...

  4. 【R语言】箱线图的绘制

    目录 零.参考 一.箱线图是什么? 二.调用步骤 1.输入命令 2.输出结果 三.总结 零.参考 (28 封私信 / 74 条消息) 箱线图怎样分析? - 知乎 (zhihu.com) 一.箱线图是什 ...

  5. 【R语言】-核密度估计图绘制

    本期介绍了利用R语言ggplot2包绘制核密度估计图. 核密度估计图(Kernel Density Estimation, KDE),是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,由Ro ...

  6. R语言可视化:森林图绘制

    森林图绘制 清除当前环境中的变量 rm(list=ls()) 设置工作目录 setwd("C:/Users/Dell/Desktop/R_Plots/39forest/") 使用s ...

  7. 【R语言】——聚类热图行列分组信息注释热图2

    上一期"[R语言]--聚类热图绘制(pheatmap)"介绍了R语言pheatmap包绘制聚类热图的基础代码,本期介绍当需要同时在热图上显示分组情况时,可利用pheatmap包构建 ...

  8. R语言ggplot2可视化线图(line plot):当数据有中断、缺失时R不会将数据绘制为连续的线图、而是出现断点

    R语言ggplot2可视化线图(line plot):当数据有中断.缺失时R不会将数据绘制为连续的线图.而是出现断点 目录

  9. r语言怎么以第二列绘制线图_用卫星图像绘制世界海岸线图-第二部分

    r语言怎么以第二列绘制线图 Part I of this blog series is here. 本博客系列的第一部分 在这里 . At the UKHO we are interested in ...

最新文章

  1. 有监督排序—LDA分析、作图及添加置信-ggord
  2. Windows系统编程之进程间通信
  3. 记录 Linux crontab 的使用
  4. Flask 正则路由匹配——转换器
  5. python 修改用户对文件权限_用户管理相关内容的学习(查看文件权限 修改文件权限chmod 改变文件归属chown和chgrp)...
  6. Android5.0免Root截屏,录屏
  7. 汇编环境搭建 Windows10 VS2019 MASM32
  8. 利用oc门或od门实现线与_OC和OD门、线与和线或
  9. 高分七号卫星发射成功
  10. java-日期操作总结
  11. 机制检验——中介检验
  12. edge浏览器网页翻译失败解决方法
  13. 连续四天!2018杭州·云栖大会你可以...
  14. ContestHunter #26 B 玩骰子
  15. python 微信自动回复小程序
  16. 浅析“热更新”(热修复)解决方案
  17. A/D转换器(ADC)
  18. 斐讯路扫地机器人怎么关机_扫地机器人使用方法,使用教程
  19. 微型计算机中 运算器的基,微型计算机中,运算器的主要功能是进行()。A.逻辑运算B.算术运算C.算术运算和...
  20. 科学前沿,AI共创 ┃ AI for Science 助力各行业高质量发展

热门文章

  1. fasttext 文本分类_一文综述经典的深度文本分类方法
  2. windows server 2008 oracle 10g,一次不太愉快的Windows Server 2008 R2 SP1上安装ORACLE 10G经历...
  3. ThinkPHP 5.0.x、5.1.x、5.2.x 全版本远程命令执行漏洞
  4. sql双表查询java代码_原生sql 多表查询
  5. lodash round
  6. CSS3 选择器用法小结
  7. nginx的ngx_http_realip_module模块和http头X-Forwarded-For、X-Real-IP
  8. 巧用css的border属性完成对图片编辑功能的性能优化
  9. 一篇文章搞定css3 3d效果
  10. CSS 属性 - 伪类和伪元素的区别