plotnine: python数据可视化版ggplot2

Python是一种面向对象的解释型计算机程序设计语言。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。Python语言也有一系列的数据可视化包(packages),包括Pandas、Matplotlib、Seaborn、ggplot、Bokeh、Pygal等(可参考http://pbpython.com/visualization-tools-1.html)

plotnine: python数据可视化版ggplot2-图片1

因为R语言拥有ggplot2及其诸多拓展包,数据可视化一直都是python的短板,即使拥有Matplotlib、Seaborn等数据可视化包。直到今年有个德国学者借鉴R语言ggplot2包的语法开发了plotnine包,几乎实现了对R语言ggplot2语法的直接移植。我们先看一段最简单的plotnine的语法与图表,语法与R语言基本无异,只是在外面加了一个括号,图表的效果跟R ggplot2的效果相同。

  1. from plotnine import *      #导入plotnine包的绘图函数
  2.  
  3. from plotnine.data import * #导入plotnine自带的数据集
  4.  
  5. (ggplot(mtcars, aes('wt','mpg', color='factor(gear)'))
  6. + geom_point()
  7. + stat_smooth(method='lm')
  8. + facet_wrap('~gear'))

 

plotnine: python数据可视化版ggplot2-图片2

plotnine的官方网站:https://plotnine.readthedocs.io/en/stable/index.htmlplotnine的安装语句:

#使用 pip语句

  1. $ pip install plotnine         # 1. should be sufficient for most
  2.  
  3. $ pip install 'plotnine[all]'  # 2. includes extra/optional packages

#或者使用 conda语句

  1. $ conda install -c conda-forge plotnine

R语言ggplot2和python的plotnine都是基于LelandWilkinson在Grammar of Graphics中提出的图表绘制理论,可以通过图层的添加方法实现数据可视化,简单而易于理解与操作。下面我就用一个数据集展示分面散点图的绘制效果:

Example1. 分面散点图1

  1. from plotnine import *         #导入plotnine包的绘图函数
  2.  
  3. from plotnine.data import * #导入plotnine自带的数据集
  4.  
  5. import pandas as pd
  6.  
  7. import numpy as np
  8.  
  9. filename=' /Jupyter_Notebook/Alzheimers.csv'
  10.  
  11. file = open(filename,errors='ignore')#encoding="utf_8_sig'")
  12.  
  13. df=pd.read_csv(file)
  14.  
  15. base_plot=(ggplot(df, aes(x = 'tau', y ='SOD', fill = 'Class')) +
  16.  
  17. geom_point(size=3,shape='o',colour="black",show_legend=False)+
  18.  
  19. stat_smooth(method = 'lowess',show_legend=False)+
  20.  
  21. facet_wrap('~ Class'))
  22.  
  23. print(base_plot)

plotnine: python数据可视化版ggplot2-图片3

Example2. 分面散点图2

  1. base_plot=(ggplot(df, aes(x = 'tau', y ='SOD', fill='age', size = 'age')) +
  2.  
  3. geom_point(shape='o',colour="black",alpha=0.95) +
  4.  
  5. scale_fill_gradient2(low="#00A08A",mid="white",high="#FF0000",midpoint= df['age'].mean())+
  6.  
  7. facet_wrap( '~ Class'))
  8.  
  9. print(base_plot)

plotnine: python数据可视化版ggplot2-图片4

Example3. 分面散点图3

  1. df['gender']=df['gender'].astype('category')
  2.  
  3. df['gender'].cat.categories=['Female','Male']
  4.  
  5. base_plot=(ggplot(df, aes(x = 'tau', y ='SOD', fill= 'Class', size = 'age')) +
  6.  
  7. #其气泡的颜色填充由Class映射,大小由age映射
  8.  
  9. geom_point(shape='o',colour="black",alpha=0.7) +
  10.  
  11. #设置气泡类型为空心的圆圈,边框颜色为黑色,填充颜色透明度为0.7
  12.  
  13. facet_grid('gender ~ Class') )# 性别Gender为行变量、类别Class为列变量
  14.  
  15. print(base_plot)

plotnine: python数据可视化版ggplot2-图片5

Example4. 箱型图

  1. base_plot=(ggplot(df, aes('Class', 'tau'))+
  2.  
  3. geom_boxplot(aes(fill = 'Class'),notch = False))
  4.  
  5. print(base_plot)

plotnine: python数据可视化版ggplot2-图片6

Example5. 小提琴图

  1. base_plot=(ggplot(df, aes('Class', 'tau'))+
  2.  
  3. geom_violin(aes(fill = 'Class'),trim = False)+
  4.  
  5. geom_boxplot(width = 0.2))
  6.  
  7. print(base_plot)

plotnine: python数据可视化版ggplot2-图片7

这两天还在家发疯图强,专门制作了plotnine的学习手册,供大家更加深入地学习与使用。该手册详细地总结概括了plotnine的主要函数与语法内容,包括geoms和stat函数、theme、scale和faceting等。

 

发表评论

匿名网友

拖动滑块以完成验证
加载中...