seaborn 绘图

  • seaborn.heatmap的函数定义形式
seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None, **kwargs)

np.random.rand()函数返回一个或一组服从0~1均匀分布的随机样本值,随机样本取值范围是[0,1),不包括1,随机创建10行12列的数组,定义一个子图宽高为9和6

import numpy as np;
import seaborn as sns; 
import matplotlib.pyplot as plt
uniform_data = np.random.rand(10, 12)
f, ax = plt.subplots(figsize=(9, 6))
ax = sns.heatmap(uniform_data)
plt.show()

应用到热力图中,得到如下图所示:

现在在上图的基础上改变一下色彩图的上下界:

ax = sns.heatmap(uniform_data, vmin=0, vmax=1)

  • 使用发散色图绘制以0为中心的数据的热力图

np.random.randn()函数返回一个或一组服从标准正态分布的随机样本值

import numpy as np;
import seaborn as sns;
import matplotlib.pyplot as plt
uniform_data = np.random.randn(10, 12)
f, ax = plt.subplots(figsize=(9, 6))
ax = sns.heatmap(uniform_data, center=0)
plt.show()

使用sns.load_dataset("flights")自带的数据集,数据集的部分截图如下,共144行数据:

import seaborn as sns
data = sns.load_dataset('flights')
print(data)
year month  passengers
0    1949   Jan         112
1    1949   Feb         118
2    1949   Mar         132
3    1949   Apr         129
4    1949   May         121
..    ...   ...         ...
139  1960   Aug         606
140  1960   Sep         508
141  1960   Oct         461
142  1960   Nov         390
143  1960   Dec         432

[144 rows x 3 columns]

接着使用了一个特别高效的函数pivot(),该函数有三个参数(index,columns,values),第一个参数index是指新表的索引,第二个参数columns是新表的列名,第三个参数values是指新表中的值,看效果就比较明确了

import seaborn as sns
data = sns.load_dataset('flights')
flights = data.pivot("month", "year", "passengers")
print(flights)
year   1949  1950  1951  1952  1953  1954  1955  1956  1957  1958  1959  1960
month                                                                        
Jan     112   115   145   171   196   204   242   284   315   340   360   417
Feb     118   126   150   180   196   188   233   277   301   318   342   391
Mar     132   141   178   193   236   235   267   317   356   362   406   419
Apr     129   135   163   181   235   227   269   313   348   348   396   461
May     121   125   172   183   229   234   270   318   355   363   420   472
Jun     135   149   178   218   243   264   315   374   422   435   472   535
Jul     148   170   199   230   264   302   364   413   465   491   548   622
Aug     148   170   199   242   272   293   347   405   467   505   559   606
Sep     136   158   184   209   237   259   312   355   404   404   463   508
Oct     119   133   162   191   211   229   274   306   347   359   407   461
Nov     104   114   146   172   180   203   237   271   305   310   362   390
Dec     118   140   166   194   201   229   278   306   336   337   405   432

显示一下热力图

使用整型格式的数值为每个单元格注释

ax = sns.heatmap(flights, annot=True, fmt="d")

为每个单元格之间添加行

ax = sns.heatmap(flights, linewidths=.5)
#heatmap函数中的参数linewidths是指划分每个单元格的行的宽度

换一个不同的色彩图,heatmap函数中的参数cmap是指色彩颜色的选择,可选的颜色还有很多,比如:Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Wistia, Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r...其中末尾加r是颜色取反

ax = sns.heatmap(flights, cmap="RdPu")

将色彩图特定值设为中心

ax = sns.heatmap(flights, center=flights.loc["January", 1955])

  • 各变量间相关性分析

相关性分析就是对整个数据集中各变量之间的关系进行分析,判断变量间相互关系的密切程度或因果关系。两个变量间的相关程度可以用相关性系数来表示,记作r。r的取值范围为[-1,1]

一个变量随着另一个变量的增长而增长—>正相关[0,+1]
一个变量随着另一个变量的增长而减少—>负相关[-1,0]

两个变量间的关系越强,相关系数的绝对值越大,完全相关时,绝对值为1

Seaborn中的heatmap函数可以绘制各变量间的相关系数热力图,将各个变量间的相关程度用颜色不同的方格来表示,默认颜色越浅表示的相关程度越高

#corr函数用于计算各变量间的相关系数
corrmat = train.corr()
#对DataFrame计算并返回相关系数矩阵,命名为corrmat

f, ax = plt.subplots(figsize=(12, 9))
#Subplots函数用于设置子图,figsize参数可设置画布大小

sns.heatmap(corrmat,square=True,annot=True,center=None,fmt='.2f',linewidths=0.05,annot_kws={'size':6})
#第一个参数为待分析的二维数组
#square=True横纵坐标指标相等,显示为正方形,每一个表示相关性系数的小格为正方形
#annot=True每个小各中填写对应变量间相关性系数值
#center=None,center参数可以设置图例中的均值数据。调整图像的整体深浅
#fmt='.2f',保留两位小数
#linewidths=0.05,设置每个小方格之间分割线的宽度
#annot_kws={'size':6},设置热力图矩阵上数字的大小颜色等,可以用键值对表示

plt.show()
  • 多变量散点图分析

取热力图中与price相关程度较高的变量,绘制多变量散点图,观察各变量与房价的相关关系

#首先设置多变量散点图中的变量,记录为变量名列表,并将列表设置为col
col=['SalePrice','TotalBsmtSF','GrLivArea','GarageArea','OverallQual']
#然后用Seaborn绘图库中的pairplot绘制多变量散点图
sns.pairplot(train[col],size=1.5)
plt.show()

分析图中红框部分呈现明显的正相关关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值