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 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 Python
在Django的模板中使用认证数据的方法
Jul 23 Python
使用Python编写简单的端口扫描器的实例分享
Dec 18 Python
python构建深度神经网络(DNN)
Mar 10 Python
单利模式及python实现方式详解
Mar 20 Python
python 列表,数组,矩阵两两转换tolist()的实例
Apr 04 Python
使用python将时间转换为指定的格式方法
Nov 12 Python
numpy基础教程之np.linalg
Feb 12 Python
详解Python学习之安装pandas
Apr 16 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
Sep 26 Python
keras获得model中某一层的某一个Tensor的输出维度教程
Jan 24 Python
Pytorch中的学习率衰减及其用法详解
Jun 05 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环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
2006/11/17 PHP
用php实现批量查询清除一句话后门的代码
2008/01/20 PHP
细谈php中SQL注入攻击与XSS攻击
2012/06/10 PHP
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
php使用session二维数组实例
2014/11/06 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
javascript removeChild 使用注意事项
2009/04/11 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
2020/03/31 Javascript
Python自定义类的数组排序实现代码
2016/08/28 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
python多任务及返回值的处理方法
2019/01/22 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
鱼油专家:Omegavia
2016/10/10 全球购物
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
导游词之沈阳植物园
2019/11/30 职场文书
基于python制作简易版学生信息管理系统
2021/04/20 Python
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL