这一节学一下回归分析的绘图方法。
回归分析就是一个值随另一个值变化,其中最符合其变化规律的方程为回归方程,这一节先学一次方程的绘制。
首先,必要的库导入一大堆。
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()
共七个字段,消费总额、消费金额、性别、是否抽烟、星期几、早餐午餐还是晚餐、几个人。
下边开始绘制各个变量之间的回归图形。
绘制图形有两种方法:regplot、lmpolt,其中lmpolt可以传递进去更多参数,绘制更复杂图形,这里先大概展示一下,后期具体用到再细化。
一、散点图
首先看一下消费总额和小费的关系。
sns.regplot(x='total_bill',y='tip',data = tips)
lmplot绘制的图形是一样的。
sns.lmplot(x='total_bill',y='tip',data = tips)
其他参数的回归图形参考着画就行。
sns.regplot(x='size',y='tip',data=tips)
吃饭人数为离散型数据,就不太适合使用散点图做回归图形了。
这是需要将吃饭的人数图形增加一个偏移,使数据分散开。
sns.stripplot(x = 'size',y='total_bill',data = tips,jitter=True)
当jitter=True时,图像的点会出现轻微偏移。这样看起来就更清晰一些。
还可以表现的更清晰一些,使点和点之间更加分散,使用swarmplot方法。
sns.swarmplot(x='size',y='total_bill',data=tips)
还可以增加更多参数,已完善细节,比如区分性别,同样hue参数可以传递进去日期等。。
sns.swarmplot(x='size',y='total_bill',data=tips,hue='sex')
二、箱型图
当数据中出现过大或者过小值时,对数据的某一些值会产生一定影响,这是可以使用箱型图先大致了解一下数据分布情况和离群值的数量、数值信息。
sns.boxplot(x='day',y='total_bill',data=tips,hue='time')
三、小提琴图
再展示一下小提琴图。
sns.violinplot(x='sex',y='total_bill',hue='time',data=tips)
当传递进去split参数为True是,会将对比数据放在同一小提琴两侧,使对比更加明了。
sns.violinplot(x='sex',y='total_bill',hue='time',data=tips,split=True)
还可以在一张图张用不同方式进行展示。
下边图同时展示散点图和小提琴图,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)
下边来看一下泰坦尼克数据集的情况。
生还率和船舱等级、性别的关系。首先柱形图。
sns.barplot(x='Sex',y='Survived',hue='Pclass',data=titanic)
然后折线图。
sns.pointplot(x='Sex',y='Survived',hue='Pclass',data=titanic)
不同仓位的生还率.
sns.pointplot(x='Pclass',y='Survived',hue='Sex',data=titanic)
最后来一个多功能的方法factorplot,先展示一下
sns.factorplot(x='Pclass',y='Age',data=titanic,hue = 'Sex')
不指定参数时,默认为折线图。
可以指定为柱状图。
sns.factorplot(x='Pclass',y='Age',data=titanic,hue = 'Sex',kind = 'bar')
散点图:
sns.factorplot(x='Pclass',y='Age',data=titanic,hue = 'Sex',kind = 'swarm')
最后增加上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的其他参数 字典