python可视化分析的实现(matplotlib、seaborn、ggplot2)


Posted in Python onFebruary 03, 2021

一、matplotlib库

1、基本绘图命令

import matplotlib.pyplot as plt
plt.figure(figsize=(5,4)) #设置图形大小
plt.rcParams['axes.unicode_minus']=False #正常显示负号
plt.rcParams['font.sans-self']=['Kai Ti'] #设置字体,这里是楷体,SimHei表示黑体

#基本统计图
plt.bar(x,y);plt.pie(y,labels=x);plt.plot(x,y);
plt.hist(df.身高) #若参数density=True则是频率直方图

3、图形参数设置

颜色: plt.plot(x,y,c=‘red') #参数c控制颜色
横纵坐标轴范围: plt.xlim(0,100),plt.ylim(0,8)
横纵坐标轴名称: plt.xlabel(),plt.ylabel()
横纵坐标轴刻度: plt.xticks(range(len(x)),x)
线形和符号: plt.plot(x,y,linestyle='?',marker=‘o') #实线:'-' ;虚线:'?'; '.'指点线
附加参考线: plt.axvline(x=1);plt.axhline(y=4)
文字标注: plt.text(3,5,‘peak point') #参数表示:坐标+文字
图例: plt.plot(x,y,label=‘折线');plt.legend()
分面绘图:

#一行两图
plt.subplot(121)
plt.bar(x,y)
plt.subplot(122)
plt.plot(x,y)
#一页多图
fig,ax=plt.subplots(2,2,figsize=(15,12)) # 2行2列放4个图,figsize控制大小
ax[0,0].bar(x,y);ax[0,1].plot(x,y);
ax[1,0].pie(x,y);ax[1,1].plot(y,'.',linewidth=3)

具体的参数color、linestyle、图例位置设置

颜色字符(color)

字符 代表颜色
r 红色
b 蓝色
g 绿色
w 白色
c 青色
m 洋红
y 黄色
k 黑色

风格字符(linestyle)

字符 代表风格
- (一个连字符) 实线
? (两个连字符) 虚线
-. 点划线
点虚线
' ' 留空,空格

loc 参数(以matplotlib添加图例为例说明位置)

loc string loc code 位置
"best" 0 右上角(默认)
“upper right” 1 右上角
“upper left” 2 左上角
“lower left” 3 左下角
“lower right” 4 右下角
"right" 5 中右侧
“center left” 6 中左侧
“center right” 7 中右侧
“low center” 8 中下方
“upper center” 9 中上方
“center” 10 中间

4、特殊统计图的绘制

4.1 数学函数图

import matplotlib.pyplot as plt   #加载基本绘图包
plt.rcParams['font.sans-serif']=['SimHei']; #SimHei黑体
plt.rcParams['axes.unicode_minus']=False; #正常显示图中负号
import numpy as np #加载软件包numpy
import math  #加载软件包math
x=np.linspace(0,2*math.pi);x #生成[0,2*pi]序列 ,作为横坐标取值
plt.plot(x,np.sin(x)) #y=sinx 正弦函数
plt.plot(x,np.cos(x)) #y=cosx 余弦函数
plt.plot(x,np.log(x)) #y=lnx #对数函数
plt.plot(x,np.exp(x)) #y=e^x 指数函数

数学函数也可以用pandas库绘制,可详见我的另一篇博客:文章链接

#极坐标图
t=np.linspace(0,2*math.pi) 
x=3*np.sin(t); 
y=5*np.cos(t) 
plt.plot(x,y); 
plt.text(0,0,r'$\frac{x^2}{3^2}+\frac{y^2}{5^2}=1$',fontsize=20) #python借鉴的LATEX的格式,可以直接在图中添加公式

python可视化分析的实现(matplotlib、seaborn、ggplot2)

4.2 气泡图

import pandas as pd
df=pd.read_excel('data.xlsx')
plt.scatter(df['身高'], df['体重'], s=df['支出']) #在散点图的基础上加上点的大小,例子中s=df['支出']就是将指各样本点支出越多,点面积就越大

python可视化分析的实现(matplotlib、seaborn、ggplot2)

4.3 三维曲面图

from mpl_toolkits.mplot3d import Axes3D 
fig = plt.figure() 
ax = Axes3D(fig)
X = np.arange(-4, 4, 0.5) 
Y = np.arange(-4, 4, 0.5) 
X, Y = np.meshgrid(X, Y)
Z = (X**2+ Y**2)
ax.plot_surface(X, Y, Z) #该图像就是表示函数z=x^2+y^2

python可视化分析的实现(matplotlib、seaborn、ggplot2)

二、seaborn库

1、常用统计图

1.1 箱线图

import seaborn as sns #加载软件包seaborn
#箱线图
sns.boxplot(x=df['身高'])
#竖着放的箱线图,也就是将 x 换成 y
sns.boxplot(y=df['身高']) 
#分组绘制箱线图
sns.boxplot(x='性别', y='身高',data=df) #将身高按性别分组后绘制

python可视化分析的实现(matplotlib、seaborn、ggplot2)

1.2 小提琴图

sns.violinplot(x='性别', y='支出', data=df) #箱线图的变种,可以加第三个类别参数hue

python可视化分析的实现(matplotlib、seaborn、ggplot2)

1.3 点图

sns.stripplot(x='性别', y='身高', data=df, jitter=True) #分组的数据(定性+定量)画的点图,jitter参数为True表示将点分散开来,默认为false

python可视化分析的实现(matplotlib、seaborn、ggplot2)

1.4 条图与计数图

#条图,即柱形图
sns.barplot(x='性别', y='身高', data=df, ci=0, palette="Blues_d") #palette用于设置颜色
#计数图
sns.countplot(x='性别', hue="开设", data=df) #都是分类变量

python可视化分析的实现(matplotlib、seaborn、ggplot2)

1.5 分组图

#按性别、开设依次分组后计数,aspect指比例大小
sns.factorplot(x='性别', col="开设", col_wrap=3, data=df, kind="count", size=2.5, aspect=.8)

python可视化分析的实现(matplotlib、seaborn、ggplot2)

1.6 概率分布图

#displot:直方图+密度函数,bins表示分的组数,kde=False表示不画出密度曲线,rug表示有数据的地方就标注出来
sns.distplot(df['身高'], kde=True, bins=20, rug=True)

#自定义渐进正态函数图像
def norm_sim2(N=1000,n=10):
 xbar=np.zeros(N)
 for i in range(N):
  xbar[i]=np.random.uniform(0,1,n).mean()#[0,1]上均匀随机数均值
 sns.distplot(xbar,bins=50)
 print(pd.DataFrame(xbar).describe().T)
norm_sim2(N=100000,n=50)

python可视化分析的实现(matplotlib、seaborn、ggplot2)

2、联合图

sns.jointplot(x='身高', y='体重', data=df)#画的散点图+单个变量的直方图

python可视化分析的实现(matplotlib、seaborn、ggplot2)

3、配对图

#针对多个变量,两两配对,画在一起
sns.pairplot(df[['身高','体重','支出']]) #将各变量间关系共放一张图上,在多元统计分析中很有用

python可视化分析的实现(matplotlib、seaborn、ggplot2)

三、ggplot库

ggplot库是采用的绘画中图层的思想,即一层一层往上叠加,先画好坐标,再添线,再增加其他操作,最后用 + 号连接起来,操作起来更有逻辑章法,语句简洁。ggplot新包是plotnine,与R语言的ggplot2对应,使用起来更方便,故直接import plotnine即可,里面的函数使用与ggplot是基本一样的

1、图层画法+常用图形

绘制直角坐标系和字体

GP=ggplot(aes(x='身高',y='体重'),data=df)

python可视化分析的实现(matplotlib、seaborn、ggplot2)

在此基础上增加线图

GP + geom_line()+ theme_grey(base_family = 'SimHei')#还可以再往上叠加,+geom_point()就是在折线图基础上加上散点图

python可视化分析的实现(matplotlib、seaborn、ggplot2)

改为有三个变量的点图,不同类型画不同记号(shape)/颜色(color)

ggplot(df,aes(x='身高',y='体重',color='性别'))+geom_point()+ theme_grey(base_family = 'SimHei')

python可视化分析的实现(matplotlib、seaborn、ggplot2)

改为分面图:
用pandas绘制分组统计图还需要先groupby,ggplot一步到位更加简便

ggplot(df,aes(x='身高',y='体重'))+geom_point()+facet_wrap('性别') + 
theme_grey(base_family = 'SimHei') #facet_wrap('性别')表示按性别分成两组画分面图

python可视化分析的实现(matplotlib、seaborn、ggplot2)

此外,+theme_bw()等可以设置图片背景、主题

2、快速绘图

ggplot也可以像pandas一样,在qplot函数中设置参数geom的取值而直接改变图像类型

#快速绘制直方图
qplot(x='身高',data=df, geom='histogram')+ theme_grey(base_family = 'SimHei')
#快速绘制柱形图
qplot('开设',data=df, geom='bar')+ theme_grey(base_family = 'SimHei')
#默认散点图
qplot('身高', '体重', data=df, color='性别') + theme_grey(base_family = 'SimHei')

以上是基于《python数据分析基础教程 王斌会》整理的学习笔记,还有许多参数设置没有写明,以及pyecharts 动态图神器,日后学习了再一点点补充吧~

到此这篇关于python可视化分析的实现(matplotlib、seaborn、ggplot2)的文章就介绍到这了,更多相关python 可视化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
探寻python多线程ctrl+c退出问题解决方案
Oct 23 Python
python实现删除文件与目录的方法
Nov 10 Python
利用Python实现图书超期提醒
Aug 02 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
浅谈Python对内存的使用(深浅拷贝)
Jan 17 Python
基于python指定包的安装路径方法
Oct 27 Python
python实现图片彩色转化为素描
Jan 15 Python
Python3.5常见内置方法参数用法实例详解
Apr 29 Python
浅谈Django+Gunicorn+Nginx部署之路
Sep 11 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
Python中实现输入超时及如何通过变量获取变量名
Jan 18 Python
python blinker 信号库
May 04 Python
matplotlib交互式数据光标mpldatacursor的实现
Feb 03 #Python
matplotlib更改窗口图标的方法示例
Feb 03 #Python
python中添加模块导入路径的方法
Feb 03 #Python
浅谈matplotlib默认字体设置探索
Feb 03 #Python
python sleep和wait对比总结
Feb 03 #Python
Python实现简单猜数字游戏
Feb 03 #Python
python 实现图片裁剪小工具
Feb 02 #Python
You might like
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
PHP中overload与override的区别
2017/02/13 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
学习ExtJS Panel常用方法
2009/10/07 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
Bootstrap中表单控件状态(验证状态)
2016/08/04 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
JS精确判断数据类型代码实例
2019/12/18 Javascript
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
毕业生求职简历的自我评价
2013/10/07 职场文书
初婚未育未抱养证明
2014/01/12 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
党风廉正建设责任书
2015/01/29 职场文书
利用Nginx代理如何解决前端跨域问题详析
2021/04/02 Servers
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS