![388df89a3ba9c509804d582122306a4b.png](https://i-blog.csdnimg.cn/blog_migrate/3718f2ac55d555ed213962379f6495b0.jpeg)
这一节学一下回归分析的绘图方法。
回归分析就是一个值随另一个值变化,其中最符合其变化规律的方程为回归方程,这一节先学一次方程的绘制。
首先,必要的库导入一大堆。
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
然后设定一下基本参数,从seaborn库中下载tips的数据集。
sns.set(color_codes=True)
np.random.seed(sum(map(ord,'regression')))
tips = sns.load_dataset('tips')
tips.head()
![c44e7d973e1a6990abe21db06308b3d3.png](https://i-blog.csdnimg.cn/blog_migrate/38e3a96a5259fb2f0f84c7057529b9d0.png)
共七个字段,消费总额、消费金额、性别、是否抽烟、星期几、早餐午餐还是晚餐、几个人。
下边开始绘制各个变量之间的回归图形。
绘制图形有两种方法:regplot、lmpolt,其中lmpolt可以传递进去更多参数,绘制更复杂图形,这里先大概展示一下,后期具体用到再细化。
一、散点图
首先看一下消费总额和小费的关系。
sns.regplot(x='total_bill',y='tip',data = tips)
![1c50d04aa3a4bac71b58936ad708056e.png](https://i-blog.csdnimg.cn/blog_migrate/0b691f50a6247e3eaff297650b75d5b4.png)
lmplot绘制的图形是一样的。
sns.lmplot(x='total_bill',y='tip',data = tips)
![4afa04a855d3f7ada73593ebddaec22b.png](https://i-blog.csdnimg.cn/blog_migrate/5d9a2e4481bccde24e2d2e81cfab73dd.png)
其他参数的回归图形参考着画就行。
sns.regplot(x='size',y='tip',data=tips)
![de0653e6528e0dca1dcc2886e7e6017b.png](https://i-blog.csdnimg.cn/blog_migrate/79484ef40e8f9c598d5c6b356b25496c.png)
吃饭人数为离散型数据,就不太适合使用散点图做回归图形了。
这是需要将吃饭的人数图形增加一个偏移,使数据分散开。
sns.stripplot(x = 'size',y='total_bill',data = tips,jitter=True)
当jitter=True时,图像的点会出现轻微偏移。这样看起来就更清晰一些。
![72929fee53884624611c834bc76c52af.png](https://i-blog.csdnimg.cn/blog_migrate/0e525a2144101125d2160a5318430a34.png)
还可以表现的更清晰一些,使点和点之间更加分散,使用swarmplot方法。
sns.swarmplot(x='size',y='total_bill',data=tips)
![0ec2c242d8e343dec0bbc72d963a3e3e.png](https://i-blog.csdnimg.cn/blog_migrate/dcd6aea83e01f7f8c1a8b7ca5d36c7a4.png)
还可以增加更多参数,已完善细节,比如区分性别,同样hue参数可以传递进去日期等。。
sns.swarmplot(x='size',y='total_bill',data=tips,hue='sex')
![cc7dc6f4a8ed1ad9d22fd2b8f59fe94e.png](https://i-blog.csdnimg.cn/blog_migrate/389095913680c8d19930eea3bce66397.png)
二、箱型图
当数据中出现过大或者过小值时,对数据的某一些值会产生一定影响,这是可以使用箱型图先大致了解一下数据分布情况和离群值的数量、数值信息。
sns.boxplot(x='day',y='total_bill',data=tips,hue='time')
![5dd2c75cd14715ed72bb6237fd2c393b.png](https://i-blog.csdnimg.cn/blog_migrate/008d119cb6979bfe87cf48e4107e4f86.png)
三、小提琴图
再展示一下小提琴图。
sns.violinplot(x='sex',y='total_bill',hue='time',data=tips)
![d3b24da6fa71490eca5e94904f408296.png](https://i-blog.csdnimg.cn/blog_migrate/8863c1a684d709ccbadd2498ea6235cb.png)
当传递进去split参数为True是,会将对比数据放在同一小提琴两侧,使对比更加明了。
sns.violinplot(x='sex',y='total_bill',hue='time',data=tips,split=True)
![d1c8aaa9db4d61015d08822d8c82728d.png](https://i-blog.csdnimg.cn/blog_migrate/289f8dacb2224febd66847a8b2e2aef5.png)
还可以在一张图张用不同方式进行展示。
下边图同时展示散点图和小提琴图,alpha参数指定透明度,在0-1之间选择,越大越透明。
sns.swarmplot(x='day',y='total_bill',data=tips,color='white',alpha=.7)
sns.violinplot(x='day',y='total_bill',data=tips)
![b0a8df5eabc74b7e054ff062ef662dde.png](https://i-blog.csdnimg.cn/blog_migrate/40b3756109d870ef253a7ef6eb94193a.png)
下边来看一下泰坦尼克数据集的情况。
生还率和船舱等级、性别的关系。首先柱形图。
sns.barplot(x='Sex',y='Survived',hue='Pclass',data=titanic)
![0b262beac62bcfb72b71f32970c49bd7.png](https://i-blog.csdnimg.cn/blog_migrate/a8c3e3bbe117ad10812aa4aafcfd505a.png)
然后折线图。
sns.pointplot(x='Sex',y='Survived',hue='Pclass',data=titanic)
![4332dc551996401d803a01352e8da8b1.png](https://i-blog.csdnimg.cn/blog_migrate/cd1a658c70321ccb81748e93290726ab.png)
不同仓位的生还率.
sns.pointplot(x='Pclass',y='Survived',hue='Sex',data=titanic)
![bc92a656e3b2394d89ed1f6244f915ef.png](https://i-blog.csdnimg.cn/blog_migrate/23c218fa420a83ade8b5d636def76caf.png)
最后来一个多功能的方法factorplot,先展示一下
sns.factorplot(x='Pclass',y='Age',data=titanic,hue = 'Sex')
![bc92a656e3b2394d89ed1f6244f915ef.png](https://i-blog.csdnimg.cn/blog_migrate/23c218fa420a83ade8b5d636def76caf.png)
不指定参数时,默认为折线图。
可以指定为柱状图。
sns.factorplot(x='Pclass',y='Age',data=titanic,hue = 'Sex',kind = 'bar')
![2073f16082964ecc5fb6fe18e635f95a.png](https://i-blog.csdnimg.cn/blog_migrate/3ddbd3186651d313e2c9bb0df6480d64.png)
散点图:
sns.factorplot(x='Pclass',y='Age',data=titanic,hue = 'Sex',kind = 'swarm')
![bbfee3bda6283612078cf22483c71982.png](https://i-blog.csdnimg.cn/blog_migrate/f9bae66719387bf1ba108f262e10e8af.png)
最后增加上factorplot函数的参数;
seaborn.factorplot(x=None, y=None, hue=None, data=None, row=None, col=None, col_wrap=None, estimator=<function mean>, ci=95, n_boot=1000, units=None, order=None, hue_order=None, row_order=None, col_order=None, kind='point', size=4, aspect=1, orient=None, color=None, palette=None, legend=True, legend_out=True, sharex=True, sharey=True, margin_titles=False, facet_kws=None, **kwargs)
Parameters:
- x,y,hue 数据集变量 变量名
- date 数据集 数据集名
- row,col 更多分类变量进行平铺显示 变量名
- col_wrap 每行的最高平铺数 整数
- estimator 在每个分类中进行矢量到标量的映射 矢量
- ci 置信区间 浮点数或None
- n_boot 计算置信区间时使用的引导迭代次数 整数
- units 采样单元的标识符,用于执行多级引导和重复测量设计 数据变量或向量数据
- order, hue_order 对应排序列表 字符串列表
- row_order, col_order 对应排序列表 字符串列表
- kind : 可选:point 默认, bar 柱形图, count 频次, box 箱体, violin 提琴, strip 散点,swarm 分散点(具体图形参考文章前部的分类介绍)
- size 每个面的高度(英寸) 标量
- aspect 纵横比 标量
- orient 方向 "v"/"h"
- color 颜色 matplotlib颜色
- palette 调色板 seaborn颜色色板或字典
- legend hue的信息面板 True/False
- legend_out 是否扩展图形,并将信息框绘制在中心右边 True/False
- share{x,y} 共享轴线 True/False
- facet_kws FacetGrid的其他参数 字典