plotnine: Python版的ggplot2作图库

同样的基本作图任务,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()manufacturermodeldisplyearcyltransdrvctyhwyflclass0audia41.819994auto(l5)f1829pcompact1audia41.819994manual(m5)f2129pcompact2audia42.020084manual(m6)f2031pcompact3audia42.020084auto(av)f2130pcompact4audia42.819996auto(l5)f1626pcompact快速作图qplot我们先直接看最简单好用的快速作图函数qplot(x, y, data)横坐标displ纵坐标cty数据mpgfrom plotnine import qplotqplot(x='displ',y='cty',data=mpg)

<ggplot: (322851325)>ggplot图层qplot是快速作图函数,如果想让图更好看,进行私人订制,那么我们需要进行图层设计首先设置ggplot图层(相当于买了一个高级画布),数据mpg横坐标x轴为displ纵坐标y轴cty在plotnine中,变量所对应的数据均可通过字段名调用from plotnine import ggplot, geom_point, aesggplot(aes(x='displ', y='cty'), mpg)

<ggplot: (321957793)>图层叠加我们可以看到,已经绘制出一个空的ggplot图层,x轴为displ,y轴为cty。接下来我们给这个图层上加上数据对应的散点,使用geom_point()直接追加在ggplot图层之上即可。(ggplot(aes(x='displ', y='cty'), mpg)+ geom_point())

<ggplot: (322466061)>color在上图中,散点是没有区分每辆车的气缸数cyl。在geom_point()中,我们可以按照气缸数cyl分门别类,按照颜色显示出来(ggplot(aes(x='displ', y='cty'), mpg)+ geom_point(aes(color='cyl')))

<ggplot: (323647173)>上图挺好看的,有时候需要绘制的字段是离散型数值,但是上色后可能不够明显,需要声明该字段为离散型。这时候用factor()来告诉plotnine,这个字段是离散型数值(ggplot(aes(x='displ', y='cty'), mpg)+ geom_point(aes(color='factor(cyl)')))

<ggplot: (321918425)>size有时候为了增加可视化显示的维度数,还可以考虑加入点的大小size(ggplot(aes(x='displ', y='cty'), mpg)+ geom_point(aes(size='hwy')))

<ggplot: (323399013)>梯度色如果你想自己设置颜色的梯度,可以通过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'))

<ggplot: (323622897)>条形图plotnine中可绘制的图有很多,刚刚已经讲了散点图,接下来我们看看plotnine中的条形图。首先准备一下数据import pandas as pddf = 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'])dfvariablecategoryvalue0genderFemale601genderMale402age1-24503age25-54304age55+205incomeLo106incomeLo-Med257incomeMed258incomeHigh40from 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'),                          # newposition=dodge_text,color='gray',  #文本颜色size=8,   #字号angle=30, #文本的角度va='top')+ lims(y=(-5, 60))                                                 # new)

<ggplot: (334727813)>from plotnine.data import economics_longeconomics_long.head()datevariablevaluevalue0101967-07-01pce507.40.00000011967-08-01pce510.50.00026621967-09-01pce516.30.00076431967-10-01pce512.90.00047241967-11-01pce518.10.000918from plotnine import ggplot, aes, geom_line(ggplot(economics_long, aes(x='date', y='value01', color='variable'))+ geom_line())

<ggplot: (334895445)>plotnine目前已经支持绝大多数ggplot2,但是文档方面没有ggplot2全,所以学习plotnine时可以参考ggplot2。plotnine文档 https://plotnine.readthedocs.io/en/latest/R语言ggplot2文档 https://ggplot2.tidyverse.org/reference/index.html

(0)

相关推荐

  • cowplot-组图

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO数据挖掘. cowplot包 cowplot包是ggplot2的简单附加组件.它旨在为 ...

  • 【R分享|实战】 科白君教你如何给散点图添加最优拟合曲线和相关性~

    " 每期小积累,分析学得美."   --科白君 "R实战"专题·第3篇   编辑 | 科白维尼   5854字 | 10分钟阅读 本期推送内容 只有空荡荡的散点 ...

  • ggplot2绘图学习 两个连续性变量

    R绘图往期回顾: ggplot2绘图学习:单变量+绘图背景 R绘图:ggeconodist,基于ggplot2的另类箱图 R语言学习系列之"多变的热图" 蚂蚁金服在线可视化引擎 G ...

  • R学习:R for Data Science(一)

    R语言学习系列 今天我们来开始一起学习一本书:R for Data Science 数据科学是一个极其广阔的领域,仅靠一本书是不可能登堂入室的.本书的目标是教会你使用最重要的数据科学工具.在一个典型的 ...

  • R学习:R for Data Science(二)

    R语言学习系列 昨天我们开始了R for Data Science这本书的学习,今天我们来继续学习 R学习:R for Data Science(一) 分面 添加额外变量的一种方法是使用图形属性.另一 ...

  • 硬笔楷书培训教材,注释详解版(即可作教材也可作练习册)

    硬笔楷书培训教材,注释详解版(即可作教材也可作练习册)

  • 61.9万为你打造星级的家,宇通房车双拓展 C533旗舰版年度之作

    [AIC 房车赏析]说起宇通房车很多人熟悉,尤其是C型车型更是宇通的主打车型.这款双拓展房车又是宇通的年度压轴大作,下面看看它有哪些让人着迷的特点. 首先看外观,整车全新造型设计,比例协调,C型额头微 ...

  • 百度文字阅读免费使用简易教程(文字转音频)-python版

    简介 如何使用百度语音合成接口,将文字转成音频 前提条件 一个百度账号 安装好python 安装baidu-aip(注意是aip,pip install baidu-aip即可) 具体操作 打开网址: ...

  • 不到 150 行代码写一个 Python 版的贪吃蛇

    来源:Python 技术「ID: pythonall」 相信大家小时候应该都玩过贪吃蛇这个游戏吧,反正我小时候超喜欢玩,没其他原因,因为家里的手机上只有这一个游戏可以消磨时光.后来随着移动互联网的普及 ...

  • python版亲戚关系计算器

    春节到了,免不了要去七大姑八大姨家拜年,顺便接受长辈们的关怀.有时偶然遇到许久没见过的远房亲戚,叫不出合适的称谓就尴尬了:或者即便被家人提示了叫法,但依然不知道和自己是什么关系. 于是就有机智的程序员 ...

  • 又一个可视化神器 Highcharts,Python版!

    Python那些事 3天前 以下文章来源于Python数据之道 ,作者投稿君 来源:Python数据之道 作者:Peter,整理:Lemon 本文重点介绍的是可视化库 Highcharts 的相关基础 ...

  • 深版风采 | 深版诗友词作推荐

    深圳诗词学会论坛简介 深圳诗词论坛是深圳诗词学会的创作园地,是会员交流诗艺的平台,同时也是与全国诗友交流的平台.论坛又是学会信息的权威发布窗口,集中体现学会的意志和理念. 论坛创建于2014年12月8 ...

  • 又一个可视化神器Highcharts,Python版也有哦!

    价值前瞻 91篇原创内容 公众号 来源:Python数据之道 作者:Peter 整理:Lemon 本文重点介绍的是可视化库 Highcharts 的相关基础知识,以及如何利用Highcharts来绘制 ...

  • 【Python版】 极简单方式实现 Circos

    很高兴再次见到生信技能树的粉丝们,我是技能树VIP小编tsznxx,目前在安德森肿瘤医院工作,记忆力好的小朋友应该对我之前的教程有印象:用GenePred注释文件进行数据分析在那里我用了最优雅的方式来 ...