社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

plotnine:python数据可视化版ggplot2

EasyCharts • 6 年前 • 908 次点击  

前言

如果你能看到我们这篇文章,就一定要谢谢你一直关注与支持我们这个微信公众号!我最近乱七八糟的事情就从没停过,其实plotnine包最先是清华大学的赵建树学长告诉我的,我也研究与学习好几个月啦,所以一直也没撰文,实在抱歉。

时至今日,才正式撰写系统性的文章正式介绍python数据可视化的这个新星包:plotnine。对于我之前使用R ggplot2的绘图的人来说,这个包实在是太好用啦,所以也隆重推荐给大家,大家可以再也不用使用绘图语法繁琐或图表元素难以调控的Matplotlib、Seaborn等包啦。

最近正在总结python回归分析的知识,敬请大家期待。

---张杰


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

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


from plotnine import *      #导入plotnine包的绘图函数

from plotnine.data import * #导入plotnine自带的数据集

(ggplot(mtcars, aes('wt','mpg', color='factor(gear)'))
+ geom_point()
+ stat_smooth(method='lm')
+ facet_wrap('~gear'))


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


#使用 pip语句

$ pip install plotnine         # 1. should be sufficient for most

$ pip install 'plotnine[all]'  # 2. includes extra/optional packages

#或者使用 conda语句

$ conda install -c conda-forge plotnine



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

Example1. 分面散点图1


from plotnine import *         #导入plotnine包的绘图函数

from plotnine.data import * #导入plotnine自带的数据集

import pandas as pd

import numpy as np

filename=' /Jupyter_Notebook/Alzheimers.csv'

file = open(filename,errors='ignore')#encoding="utf_8_sig'")

df=pd.read_csv(file)

base_plot=(ggplot(df, aes(x = 'tau', y ='SOD', fill = 'Class')) +

 geom_point(size=3,shape='o',colour="black",show_legend=False)+

 stat_smooth(method = 'lowess',show_legend=False)+

 facet_wrap('~ Class'))

print(base_plot)



Example2. 分面散点图2


base_plot=(ggplot(df, aes(x = 'tau', y ='SOD', fill='age', size = 'age')) +

 geom_point(shape='o',colour="black",alpha=0.95) +

 scale_fill_gradient2(low="#00A08A",mid="white",high="#FF0000",midpoint= df['age'].mean())+

 facet_wrap( '~ Class'))

print(base_plot)




Example3. 分面散点图3


df['gender']=df['gender'].astype('category')

df['gender'].cat.categories=['Female','Male']

base_plot=(ggplot(df, aes(x = 'tau', y ='SOD', fill= 'Class', size = 'age')) +

#其气泡的颜色填充由Class映射,大小由age映射

 geom_point(shape='o',colour="black",alpha=0.7) +

#设置气泡类型为空心的圆圈,边框颜色为黑色,填充颜色透明度为0.7

 facet_grid('gender ~ Class') )# 性别Gender为行变量、类别Class为列变量

print(base_plot)



Example4. 箱型图


base_plot=(ggplot(df, aes('Class', 'tau'))+

          geom_boxplot(aes(fill = 'Class'),notch = False))

print(base_plot)




Example5. 小提琴图


base_plot=(ggplot(df, aes('Class', 'tau'))+

          geom_violin(aes(fill = 'Class'),trim = False)+

          geom_boxplot(width = 0.2))

print(base_plot)





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

该手册的领取方式:

1.  将该文章转发到微信朋友圈或者微信群,获得10个以上的赞;

2. 添加微信号:EasyCharts,将转发与点赞情况截图发给该微信。



欢迎大家加入QQ群一起探讨学习



如需联系EasyCharts团队

请加微信:EasyCharts


【书籍推荐】《Excel 数据之美--科学图表与商业图表的绘制》

【手册获取】国内首款-数据可视化参考手册:专业绘图必备

【必备插件】  EasyCharts -- Excel图表插件

【网易云课堂】  Excel 商业图表修炼秘笈之基础篇




今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/tRiSayAEIl
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/23452
 
908 次点击