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 相关文章推荐
pyramid配置session的方法教程
Nov 27 Python
详尽讲述用Python的Django框架测试驱动开发的教程
Apr 22 Python
Python中使用ElementTree解析XML示例
Jun 02 Python
Ubuntu下安装PyV8
Mar 13 Python
轻松理解Python 中的 descriptor
Sep 15 Python
Sanic框架异常处理与中间件操作实例分析
Jul 16 Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 Python
python 对字典按照value进行排序的方法
May 09 Python
pycharm通过anaconda安装pyqt5的教程
Mar 24 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
Python collections.deque双边队列原理详解
Oct 05 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
Dec 08 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同时支持GIF、png、JPEG
2006/10/09 PHP
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
早该知道的7个JavaScript技巧
2016/06/21 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
JS中的三个循环小结
2017/06/20 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
vue.js 解决v-model让select默认选中不生效的问题
2020/07/28 Javascript
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
python中调试或排错的五种方法示例
2019/09/12 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
vue+django实现下载文件的示例
2021/03/24 Vue.js
九年级体育教学反思
2014/01/23 职场文书
化工专业自荐书
2014/06/16 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
房租涨价通知
2015/04/23 职场文书
民事纠纷协议书
2016/03/23 职场文书
Python pandas求方差和标准差的方法实例
2021/08/04 Python
详解JS数组方法
2021/11/20 Javascript
SQLServer中exists和except用法介绍
2021/12/04 SQL Server