[学习笔记]seaborn 函数学习

数据集地址:
seaborn - https://github.com/mwaskom/seaborn-data

1 基本函数

1.1 直接绘图类方法

该类型直接连接数据集后绘图,简洁快速。按照功能分为以下五类
· 关系类
· 分类类
· 分布类
· 回归类
· 热图类

1.1.1 关系类函数

功能函数
关系图总接口.relplot()
散点图.scatterplot()
线型图.lineplot()
1.1.1.1 散点图 - scatterplot()

多元维度数据最常用的为散点图,如数据 seaborn/tips
在这里插入图片描述

scatterplot(x=None, y=None, hue=None, style=None, size=None, data=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, markers=True, style_order=None, x_bins=None, y_bins=None, units=None, estimator=None, ci=95, n_boot=1000, alpha='auto', x_jitter=None, y_jitter=None, legend='brief', ax=None, **kwargs)

主要参数:
x,y - 需要绘制的数据
data – 引用的数据集
hue - 产生不同颜色的点来分组
sytle-产生不同形状的点来分组
ci - 空值误差允许百分比
n_boot - 计算置信区间需要的迭代次数
x_jitter,y_jitter - 点的抖动程度

case1

import seaborn as sns
tips = sns.load_dataset("tips")
#设置tips为数据集,total_bill为横轴,tip为纵轴
#根据day变色,根据time变样式,根据size变尺寸
ax = sns.scatterplot(x="total_bill", y="tip", data=tips,hue='day',style='time',size='size')

在这里插入图片描述
case2

 import seaborn as sns
tips = sns.load_dataset("tips")
#设置点颜色
cmap = sns.cubehelix_palette(dark=.3,light=.8,as_cmap=True)
#设置点最大最小值,并在图例中显示
ax = sns.scatterplot(x='total_bill',y='tip',hue='size',size='size', sizes=(20,200),legend='full',palette=cmap,data=tips)

输出结果:
在这里插入图片描述

1.1.1.2 线型图 - lineplot()

带宽类数据,每个x值处汇总多个y值,可用线型图绘制,如seaborn/fmri
在这里插入图片描述

lineplot(x=None, y=None, hue=None, size=None, style=None, data=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, dashes=True, markers=None, style_order=None, units=None, estimator='mean', ci=95, n_boot=1000, seed=None, sort=True, err_style='band', err_kws=None, legend='brief', ax=None, **kwargs)

主要参数:
x,y - 需要绘制的数据
data – 引用的数据集
hue - 产生不同颜色的点来分组
sytle-产生不同形状的点来分组

case

import seaborn as sns;
fmri = sns.load_dataset("fmri")
sns.lineplot(x="timepoint", y="signal", data=fmri,hue='event')

输出结果:
在这里插入图片描述

1.1.1.3 图接口 - relplot()

scatter和line的上级入口,可同时绘多个图形

lplot(x=None, y=None, hue=None, size=None, style=None, data=None, row=None, col=None, col_wrap=None, row_order=None, col_order=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, markers=None, dashes=None, style_order=None, legend='brief', kind='scatter', height=5, aspect=1, facet_kws=None, **kwargs)

主要参数:
kind: scatter则转为散点图,line则转为线型图
col:根据col数量决定图片纵列数量
row:根据row数量决定图片纵列数量

case:

import seaborn as sns
tips = sns.load_dataset("tips")
#按照time和sex生成2X2张图,横轴为total_bill,纵轴为tip,按day赋色 
sns.relplot(x="total_bill", y="tip", hue="day",col="time", row="sex", data=tips)

输出结果:
在这里插入图片描述

1.1.2 分类类函数

功能函数
分类图总接口.catplot()
散点图.stripplot() / .swarmplot()
分布图.boxplot() / .violinplot() / .boxenplot()
估计图.pointplot() / .barplot() / .countplot()
1.1.2.1. 分类散点图 - stripplot()

需要把数据的横轴设置成照单个属性区分成有限个等级,可用分类散点函数

stripplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, jitter=True, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor='gray', linewidth=0, ax=None, **kwargs)

主要参数:
data – 引用的数据集
x,y - 需要绘制的数据
jitter - 数据的横向抖动量
dodge - 如设置了hue,可以设置dodge=True来使各色带相互叠加

案例合集:

import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
plt.figure(figsize=(20,10))
#单维度
plt.subplot2grid((3,2),(0,0))
sns.stripplot(x="total_bill",data=tips)
#多维度
plt.subplot2grid((3,2),(0,1))
sns.stripplot(x="day", y="total_bill", data=tips)
#调整运动宽度
plt.subplot2grid((3,2),(1,0))
sns.stripplot(x="day", y="total_bill", data=tips,jitter=0.05)
#改变方向
plt.subplot2grid((3,2),(1,1))
sns.stripplot(y="day", x="total_bill", data=tips,jitter=0.05)
#虚化
plt.subplot2grid((3,2),(2,0))
sns.stripplot("day", "total_bill", "smoker", data=tips,palette="Set2", size=20, marker="D",edgecolor="gray", alpha=.25)
#重叠绘图
plt.subplot2grid((3,2),(2,1))
sns.boxplot(x="tip", y="day", data=tips, whis=np.inf)
sns.stripplot(x="tip", y="day", data=tips,jitter=True, color=".3")

输出结果:
在这里插入图片描述

1.1.2.2. 分类散点图 - swarmplot()

需求绘制散点图时各点不重叠,可用此函数

swarmplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor='gray', linewidth=0, ax=None, **kwargs)

主要参数:同stripplot()
case:

import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
plt.figure(figsize=(25,10))
#stripplot
plt.subplot2grid((1,2),(0,0))
sns.stripplot(x="day", y="total_bill", data=tips)
#swarmplot
plt.subplot2grid((1,2),(0,1))
sns.swarmplot(x="day", y="total_bill", data=tips)

输出结果:
在这里插入图片描述

1.1.2.3. 箱型分布图 - boxplot()
boxplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, width=0.8, dodge=True, fliersize=5, linewidth=None, whis=1.5, ax=None, **kwargs)

主要参数:
data – 引用的数据集
x,y - 需要绘制的数据
saturation - 饱和度比例
fliersize -异常值的标识大小
palette - 颜色序列图谱
notch - 矩形是否凹陷
whis - 控制在超过高低四分位数时 IQR 的比例

case:

import seaborn as sns
import matplotlib.pyplot as plt
tips=sns.load_dataset('tips')
plt.figure(figsize=(20,20))
#单个示例
plt.subplot2grid((2,2),(0,0))
sns.boxplot(y="total_bill", data=tips)
#多个箱形图示例
plt.subplot2grid((2,2),(0,1))
sns.boxplot(x="day", y="total_bill", data=tips)
#变形箱形图示例
plt.subplot2grid((2,2),(1,0))
sns.boxplot(x="day", y="total_bill", data=tips,notch =True)
#多变量箱形图
plt.subplot2grid((2,2),(1,1))
sns.boxplot(x="day", y="total_bill", hue="smoker",data=tips,palette="Set3")

输出结果:
在这里插入图片描述

1.1.2.4 条型分布图-barplot()

以矩形条的方式展示数据的点估值和置信区间。用每个矩形的高度来表示数值变量的集中趋势的估计值,并提供误差条来显示估计值得不确定度。

barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=<function mean at 0x0000025B8EA89C18>, ci=95, n_boot=1000, units=None, seed=None, orient=None, color=None, palette=None, saturation=0.75, errcolor='.26', errwidth=None, capsize=None, dodge=True, ax=None, **kwargs)

主要参数:
x, y, hue - 变量
data - 数据集
ci - 置信区间
n_boost - 迭代次数
orient - 绘图方向
palette - 调色板
errcolor - 误差区间的颜色
errwidth - 误差区间的带宽
capsize - 误差条顶部宽度

case:

import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
plt.figure(figsize=(20,20))
#基本绘图
plt.subplot2grid((2,2),(0,0))
sns.barplot(x="day", y="total_bill", data=tips)
#多变量嵌套分组
plt.subplot2grid((2,2),(0,1))
sns.barplot(x="day", y="total_bill", hue="sex", data=tips)
#误差条端点 + 调色板
plt.subplot2grid((2,2),(1,0))
sns.barplot(x="day", y="tip", data=tips, capsize=.2,palette="Blues_d")
#单色绘图
plt.subplot2grid((2,2),(1,1))
sns.barplot(x="day", y="tip", data=tips, capsize=.2,color="Salmon")

输出结果:
在这里插入图片描述

1.1.3 分布类函数

功能函数
直方图.distplot()
联合分布图.jointplot()
变量关系组图.pairplot()
核密度图.kdeplot()
分类图总接口.catplot()
1.1.3.1. 直方分布图 - distplot()

独立变量/单变量可用

distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)

主要参数:
a – 引用的数据
bins - 图中柱的数量
hist-是否绘制标准直方图
kde-是否绘制高斯核密度估计图
rug - 是否在横轴上绘制观测值竖线
vertical - True则在Y轴绘制
norm_hist - 绘制普通直方图默认false。True则直方图的高度显示密度而不是计数。如果绘制 KDE 图或拟合密度,则默认为 True

case:

import seaborn as sns
import numpy as np
import scipy.stats as sts
ex_x=np.random.normal(0,1,200)
plt.figure(figsize=(20,20))
plt.subplot2grid((2,2),(0,0))
#直方图
sns.distplot(ex_x,axlabel='x variable')
#增加核密度图
plt.subplot2grid((2,2),(0,1))
sns.distplot(ex_x,rug='True',hist='False')
#使用直方图和最大似然高斯分布拟合绘制分布图
plt.subplot2grid((2,2),(1,0))
sns.distplot(ex_x,fit=sts.norm,kde='False')
#横置
plt.subplot2grid((2,2),(1,1))
sns.distplot(ex_x,vertical='True',color='y')

输出结果:
在这里插入图片描述

1.1.3.2. 核密度分布图 - kdeplot()

单变量或双变量可用核密度估计图

kdeplot(data, data2=None, shade=False, vertical=False, kernel='gau', bw='scott', gridsize=100, cut=3, clip=None, legend=True, cumulative=False, shade_lowest=True, cbar=False, cbar_ax=None, cbar_kws=None, ax=None, **kwargs)

主要参数:
data - 一维输入
data2 - 一维输入,存在则变双变量kde
shade-在KDE下方的区域中增加阴影,或者在数据为双变量时使用填充的轮廓绘制
vertical - True则在Y轴绘制
kernel:核的形状,可选:'gau’ | ‘cos’ | ‘biw’ | ‘epa’ | ‘tri’ | ‘triw’ };双变量 kde只能使用高斯核
cmap:颜色图谱
bw:每个维的核大小,可选 ‘scott’ | ‘silverman’ | scalar | pair of scalars
cut:绘制估计值以从极端数据点切割* bw
cumulative:如果为 True,则绘制 kde 估计图的累积分布
shade_lowest:设置为False可在同一轴上绘制多个密度

核函数在这里插入图片描述
case:

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
sns.set(color_codes=True)
plt.figure(figsize=(30,30))
x=np.random.normal(0,1,500)
y1=np.random.normal(12,4,500)
y2=np.random.normal(-15,2.25,500)
#单变量
plt.subplot2grid((3,3),(0,0))
sns.kdeplot(x)
#双变量
plt.subplot2grid((3,3),(0,1))
sns.kdeplot(x,y1)
#双变量重叠
plt.subplot2grid((3,3),(0,2))
sns.kdeplot(x,y1,shade=True,cmap='Reds',shade_lowerst=False)
sns.kdeplot(x,y2,shade=True,cmap='Blues',shade_lowerst=False)
#kernel list
kernel_list=['gau','cos','biw','epa','tri','triw']
for i in range (2):
    for j in range(3):
        plt.subplot2grid((3,3),(i+1,j))
        sns.kdeplot(x,kernel=kernel_list[3*i+j])

输出结果:
在这里插入图片描述

1.1.3.3. 联合分布图 - jointplot()
jointplot(x, y, data=None, kind='scatter', stat_func=None, color=None, height=6, ratio=5, space=0.2, dropna=True, xlim=None, ylim=None, joint_kws=None, marginal_kws=None, annot_kws=None, **kwargs)

主要参数:
x,y - 输入
data - 数据集
kind - 图像类型, scatter | reg | resid | kde | hex
ratio,space - 中心轴的高度与侧边轴高度的比例,中心和侧边轴的间隔大小
xlim, ylim - 轴的范围

case1:联合分布

import seaborn as sns
import matplotlib.pyplot as plt
iris=sns.load_dataset("iris")
sns.jointplot('sepal_length','sepal_width',data=iris,kind='kde')

输出结果:
在这里插入图片描述
case2:简单配置修改

import seaborn as sns
import matplotlib.pyplot as plt
iris=sns.load_dataset("iris")
sns.jointplot('sepal_length','sepal_width',data=iris,kind='kde',ratio=10,color='g')

输出结果:
在这里插入图片描述

case3:联合分布图中添加中心密度估计

import seaborn as sns
import matplotlib.pyplot as plt
tips=sns.load_dataset("tips")
#
sns.jointplot('total_bill','tip',data=tips,kind='reg',color='g').plot_joint(sns.kdeplot(tips["total_bill"],tips["tip"]))

输出结果:
在这里插入图片描述

1.1.3.4. 直方分布图 - pairplot()

数据集中各数据列的成对关系。如有N列数据,则生成N*N张图。

pairplot(data, hue=None, hue_order=None, palette=None, vars=None, x_vars=None, y_vars=None, kind='scatter', diag_kind='auto', markers=None, height=2.5, aspect=1, dropna=True, plot_kws=None, diag_kws=None, grid_kws=None, size=None)

主要参数:
data – 引用的数据集
hue - 产生不同颜色的点来分组
palette - hue变量的颜色集
vars - 要使用的变量(如指定M列数据,则生成M*M张图)
x_vars,y_vars - 指定横纵轴内容(非方形图)
kind - 各关系图的类型 。{‘scatter’, ‘reg’}可选。
diag_kind -对角线图的类型。{‘auto’, ‘hist’, ‘kde’} 可选
markers - 各关系图中点的类型

case :选择iris部分数据绘制关系图

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="ticks", color_codes=True)
iris = sns.load_dataset("iris")
sns.pairplot(iris,vars=['sepal_length','sepal_width'])
sns.pairplot(iris,x_vars=['sepal_length','sepal_width'], y_vars=['petal_length','petal_width'],kind='reg',hue="species", palette="husl",markers=["o", "s","D"])

输出结果:
在这里插入图片描述在这里插入图片描述

1.1.3.5 小提琴分布图 - violinplot()
violinplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, bw='scott', cut=2, scale='area', scale_hue=True, gridsize=100, width=0.8, inner='box', split=False, dodge=True, orient=None, linewidth=None, color=None, palette=None, saturation=0.75, ax=None, **kwargs)

主要参数:
x, y, hue - 变量及分类方法
data - 数据集
bw - 核密度带宽
order, hue_order - 分类变量的绘制顺序
scale - 缩放每张小提琴图的宽度。“area”-每张图具有相同的面积, “count”-根据分箱中观察点数量进行缩放, “width”-每张图具有相同的宽度
scale_hue - 缩放仅限于scale_hue = True范围
inner - “box”-微型箱型图, “quartile”-显示四分位数线, “point”, “stick”-显示具体数据点/线,“None”-绘制不加修饰的小提琴图
split - 配合hue,每种颜色绘制对应半边小提琴,合到一张图里
dodge - 使用色调嵌套时,元素是否应沿分类轴移动
orient - “v”/“h”,绘图的方向
linewidth,color,paltte - 线宽,颜色,色谱
saturation - 绘制颜色的原始饱和度的比例

case:

import seaborn as sns
tips=sns.load_dataset('tips')
#case1 - base状态
#sns.violinplot(x="day", y="total_bill", data=tips)
#case2 - 分类变量
#sns.violinplot(x="day", y="total_bill",hue="smoker", data=tips)
#case3 - 分类变量集中到一张图里
#sns.violinplot(x="day", y="total_bill",hue="smoker", data=tips,split=True)
#case4 - 按顺序排列
#sns.violinplot(x="day", y="total_bill",hue="smoker", #data=tips,split=True,order=["Sun", "Sat","Fri","Thur"],palette="Set2")
#case5 - 绘制数据线
#sns.violinplot(x="day", y="total_bill",hue="sex", data=tips,split=True,scale="count",inner="stick")
#case6 - 修改带宽
#sns.violinplot(x="day", y="total_bill",hue="sex", data=tips,split=True,scale="count",inner="stick",bw=.2)

输出结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.1.4 回归类函数

功能函数
回归图.lmplot()
线性回归图.regplot()
回归残差图.residplot()
1.1.4.1. 线性回归图 - regplot()

线性回归拟合.

regplot(x, y, data=None, x_estimator=None, x_bins=None, x_ci='ci', scatter=True, fit_reg=True, ci=95, n_boot=1000, units=None, order=1, logistic=False, lowess=False, robust=False, logx=False, x_partial=None, y_partial=None, truncate=False, dropna=True, x_jitter=None, y_jitter=None, label=None, color=None, marker='o', scatter_kws=None, line_kws=None, ax=None)

主要参数:
x,y - 输入
data - 数据集
x_estimator - 当x是离散变量时,绘制其各值的置信区间
x_bins - 将连续变量x划分为离散区间,然后估计中心趋势和置信区间
ci -置信区间的值
n_boot - 回归采样数
order - 多项式回归时设置order值(order=2则为二项式回归)
robust - 设置为稳健回归
logx - 设置为对数回归
x_jitter,y_jitter - 离散变量分布图的抖动

case:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
tips=sns.load_dataset("tips")
plt.figure(figsize=(30,30))
#基本回归图
plt.subplot2grid((4,2),(0,0))
sns.regplot(x='total_bill',y='tip',data=tips)
#调整参数
plt.subplot2grid((4,2),(0,1))
sns.regplot(x='total_bill',y='tip',data=tips,color='g',marker='+',ci=68)
#对每个size(离散)做置信区间分析
plt.subplot2grid((4,2),(1,0))
sns.regplot(x='size',y='total_bill',data=tips,x_estimator=np.mean)
#抖一抖
plt.subplot2grid((4,2),(1,1))
ax = sns.regplot(x="size", y="total_bill", data=tips, x_jitter=.1)
#对total_bill(连续)划分有限个区间
plt.subplot2grid((4,2),(2,0))
sns.regplot(x='total_bill',y='tip',data=tips,x_bins=8,color='r')
#对数回归
plt.subplot2grid((4,2),(2,1))
sns.regplot(x="size", y="total_bill", data=tips,x_estimator=np.mean, logx=True, truncate=True)
#构建一个二次函数,增加噪声,然后绘制回归图
plt.subplot2grid((4,2),(3,0))
x_5=np.arange(0,5,0.1)
y_5=x_5*x_5+2*x_5+1
tolerance= (np.random.rand(len(x_5)))*2-1
sns.regplot(x=x_5,y=y_5+tolerance,data=tips,order=2)
#稳健回归 (只能order=1)
plt.subplot2grid((4,2),(3,1))
y_6=3*x_5+1
x_6=np.append(x_5,2.05)
y_6=np.append(y_6,14)
tolerance= (np.random.rand(len(x_6)))*2-1
sns.regplot(x=x_6,y=y_6+tolerance,data=tips,robust=True)

输出结果:
在这里插入图片描述

1.1.4.2. 回归图 - lmplot()

绘图高级入口

lmplot(x, y, data, hue=None, col=None, row=None, palette=None, col_wrap=None, height=5, aspect=1, markers='o', sharex=True, sharey=True, hue_order=None, col_order=None, row_order=None, legend=True, legend_out=True, x_estimator=None, x_bins=None, x_ci='ci', scatter=True, fit_reg=True, ci=95, n_boot=1000, units=None, order=1, logistic=False, lowess=False, robust=False, logx=False, x_partial=None, y_partial=None, truncate=False, x_jitter=None, y_jitter=None, scatter_kws=None, line_kws=None, size=None)

主要参数:
col,row - 按照指定的数据项排列主图

case1:

import seaborn as sns
tips=sns.load_dataset('tips')
sns.lmplot(x="total_bill",y="tip",hue='smoker',data=tips,markers=["o","x"],palette="Set1")

输出结果:
在这里插入图片描述
case2:

import seaborn as sns
tips=sns.load_dataset('tips')
#对每一个smoker值建立一张图,排成一行
sns.lmplot(x="total_bill", y="tip",row="sex",col="time", data=tips)

输出结果:
在这里插入图片描述

1.1.5 热图

功能函数
热图.heatmap()
分层聚类图.cluster2ap()
1.1.5.1 热图 - heatmap

将矩形数据绘制为颜色编码矩阵

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)

主要参数:
data - 矩阵数据
vmin,vmax - 色彩范围
cmap - 颜色图谱
center - 中心点的色彩值
robust - 设置为True且vmin/vmax=none时,采用稳健绘图,而非极值
annot - 设置为True时会在每个单元格内写入键值
fmt - 字符串格式代码
linewidhts,linecolor - 划分每个单元格的宽度/线条颜色
cbar - 是否绘制颜色条
mask - 布尔数组。遮蔽mask=True的单元格

case:

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(30,30))
mydata=np.random.rand(10,10)
#基本热图
plt.subplot2grid((4,2),(0,0))
sns.heatmap(mydata)
#稳健
plt.subplot2grid((4,2),(0,1))
sns.heatmap(mydata,robust=True)
#设置热度范围
plt.subplot2grid((4,2),(1,0))
sns.heatmap(mydata,vmin=0.2,vmax=0.8)
#设置中心格色度为0
plt.subplot2grid((4,2),(1,1))
sns.heatmap(mydata,center=0)
#在每格里增加值
plt.subplot2grid((4,2),(2,0))
sns.heatmap(mydata,annot=True)
#设置线属性
plt.subplot2grid((4,2),(2,1))
sns.heatmap(mydata,linewidth='1',linecolor='Black')
#调整风格
plt.subplot2grid((4,2),(3,0))
sns.heatmap(mydata,cmap='YlGnBu')
#遮蔽
plt.subplot2grid((4,2),(3,1))
mask = np.zeros_like(mydata)
mask[np.triu_indices_from(mask)] = True
with sns.axes_style("white"):
    sns.heatmap(mydata, mask=mask, vmax=.3, square=True)

输出结果:
在这里插入图片描述

1.1.5.2 分层聚类图 - clustermap()

将矩阵数据集绘制成分层聚类热图

clustermap(data, pivot_kws=None, method='average', metric='euclidean', z_score=None, standard_scale=None, figsize=None, cbar_kws=None, row_cluster=True, col_cluster=True, row_linkage=None, col_linkage=None, row_colors=None, col_colors=None, mask=None, **kwargs)

主要参数:
data - 矩阵数据输入
method - 计算聚类的方法,{’single’,’complete’,’average’,’weighted’,’centroid’,’median’,’ward’}可选
metric - 距离度量的方法,{‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘cityblock’, ‘correlation’, ‘cosine’, ‘dice’, ‘euclidean’, ‘hamming’, ‘jaccard’, ‘jensenshannon’, ‘kulsinski’, ‘mahalanobis’, ‘matching’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’}
z_score - 是否计算z分数。 0 - 行, 1 - 列
standard_scale - 是否标准化该维度。0 - 行, 1 - 列
row_cluster,col_cluster - True时为row/col聚类
row_linkage,col_linkage - 预计算链接矩阵
row_color,col_color - 设置颜色
mask - 布尔数组。遮蔽mask=True的单元格

case1:

import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset("iris")
species = iris.pop("species")
sns.clustermap(iris, cmap="mako", robust=True)

输出结果:

在这里插入图片描述
case2:

import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset("iris")
species = iris.pop("species")
#正规化数据
sns.clustermap(iris, z_score=0)

输出结果:
在这里插入图片描述

1.2 网格绘图类方法

该类型工作方式是是使用数据集和用于构造网格的变量初始化 XXXGrid 对象,建立绘图网格;然后通过调用map()或者map_dataframe(),调用1.1中的部分基础绘图函数应用于每个子集;最后可以使用其他方法调整绘图。

1.2.1 条件关系类 - Facet

1.2.1.1 绘制条件关系的多图网格 - FacetGrid()
FacetGrid(data, row=None, col=None, hue=None, col_wrap=None, sharex=True, sharey=True, height=3, aspect=1, palette=None, row_order=None, col_order=None, hue_order=None, hue_kws=None, dropna=True, legend_out=True, despine=True, margin_titles=False, xlim=None, ylim=None, subplot_kws=None, gridspec_kws=None, size=None)

data - 数据
row, col, hue - 分类类别
col_wrap - 网格列的维度
height, aspect - 高度,纵横比
row_oder, col_order, hue_order - 排序

1.2.1.2 绘制函数 - FacetGrid.map() / FacetGrid.map_dataframe()
map(self, func, *args, **kwargs)
map_dataframe(self, func, *args, **kwargs)

func - 指定绘图函数
args - 绘图参数

case 1:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
bins = np.arange(0, 65, 5)
tips=sns.load_dataset("tips")
sns.FacetGrid(tips,col="time",row="smoker").map(plt.hist, "total_bill")

在这里插入图片描述
case2:

sns.FacetGrid(tips,col="time",row="smoker").map(plt.scatter, "total_bill","tip",edgecolor="g")

在这里插入图片描述

case3:

sns.FacetGrid(tips,col="time",hue="smoker",height=4,aspect=0.8,col_order=["Lunch","Dinner"],hue_kws=dict(marker=["^", "v"])).map(plt.scatter, "total_bill","tip",edgecolor="g")

在这里插入图片描述

1.2.2 成对关系类 - Pair

1.2.2.1 绘制条件关系的多图网格 - FacetGrid()
pairplot(data, hue=None, hue_order=None, palette=None, vars=None, x_vars=None, y_vars=None, kind='scatter', diag_kind='auto', markers=None, height=2.5, aspect=1, corner=False, dropna=True, plot_kws=None, diag_kws=None, grid_kws=None, size=None)

data - 数据
hue - 数据分类
vars - 选定展示的数据
x_vars,y_ars - 横纵轴
kind - scatter / reg
diag_kind - ‘auto’, ‘hist’, ‘kde’, None

1.2.2.2 函数绘制 - PairGrid.map()
map(self, func, **kwargs)

func - 绘制函数

1.2.2.3 对角线函数绘制 - PairGrid.map_diag()
map_diag(self, func, **kwargs)

func - 绘制函数

1.2.2.4 非对角线函数绘制 - PairGrid.map_offdiag()
map_offdiag(self, func, **kwargs)

func - 绘制函数

case1:基本绘制

import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset("iris")
sns.PairGrid(iris).map(plt.scatter)

输出结果:
在这里插入图片描述
case2:对角线和其他图不同设置

import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset("iris")
g=sns.PairGrid(iris,hue="species")
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter)
g.add_legend()

输出结果:
在这里插入图片描述
case3 :上下三角用不同类型

import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset("iris")
g=sns.PairGrid(iris)
g.map_upper(plt.scatter)
g.map_lower(sns.kdeplot, cmap="Blues_d")
g.map_diag(sns.kdeplot, lw=3, legend=False)

输出结果:
在这里插入图片描述

1.2.3 双变量关系类 - Joint

1.2.3.1 边际单变量图的双变量图网格 - JointGrid()
JointGrid(x, y, data=None, height=6, ratio=5, space=0.2, dropna=True, xlim=None, ylim=None, size=None)

x,y - 横纵参数
height , ratio - 各边的大小,及各边高度与大小之比

1.2.3.2 函数绘制 - JointGrid.plot()
plot(self, joint_func, marginal_func, annot_func=None)

joint_func - 绘制画布中心的联合分布函数
marginal_func - 绘制两坐标轴的边缘分布函数

1.2.3.3 双变量图绘制 - JointGrid.plot_joint()
plot_joint(self, func, **kwargs)

func - 绘图函数

1.2.3.4 单变量分别绘制 - JointGrid.plot_marginals()
plot_marginals(self, func, **kwargs)

case 1:基本绘制

import seaborn as sns
sns.set(style="ticks", color_codes=True)
tips = sns.load_dataset("tips")
g = sns.JointGrid(x="total_bill", y="tip", data=tips)
g.plot(sns.regplot, sns.distplot)

输出结果:
在这里插入图片描述
case2:分别绘制联合分布图和边缘直方图

import seaborn as sns
sns.set(style="ticks", color_codes=True)
tips = sns.load_dataset("tips")
g = sns.JointGrid(x="total_bill", y="tip", data=tips)
g.plot_joint(plt.scatter, color=".5", edgecolor="white")
g.plot_marginals(sns.distplot, kde=False, color=".5")

在这里插入图片描述
case3:两轴边缘分布分别绘制

import seaborn as sns
import numpy as np
sns.set(style="ticks", color_codes=True)
tips = sns.load_dataset("tips")
g = sns.JointGrid(x="total_bill", y="tip", data=tips)
g.plot_joint(plt.scatter, color="m", edgecolor="white")
g.ax_marg_x.hist(tips["total_bill"], color="b", alpha=.6,bins=np.arange(0, 60, 5))
g.ax_marg_y.hist(tips["tip"], color="r", alpha=.6,orientation="horizontal",bins=np.arange(0, 12, 1))

输出结果:

在这里插入图片描述

2 配置函数

2.1 主题

·set() - 自定义图表参数

seaborn.set(context='notebook', style='darkgrid', palette='deep', font='sans-serif', font_scale=1, color_codes=True, rc=None)

·set_style() - 设定部分图表风格

seaborn.set_style(style=None, rc=None)

·axes_style() - 设定坐标轴风格

seaborn.axes_style(style=None, rc=None)

各类型风格:

import seaborn as sns
tips = sns.load_dataset("tips")
plt.figure(figsize=(10,10))
#default="ticks"
plt.subplot2grid((3,2),(0,0))
sns.set_style("darkgrid")
plt.subplot2grid((3,2),(0,1))
sns.set_style("whitegrid")
plt.subplot2grid((3,2),(1,0))
sns.set_style("dark")
plt.subplot2grid((3,2),(1,1))
sns.set_style("ticks")
plt.subplot2grid((3,2),(2,0))
sns.set_style("white")
plt.subplot2grid((3,2),(2,1))

在这里插入图片描述

2.2 字体

set_context() - 设置绘图文本参数

seaborn.set_context(context=None, font_scale=1, rc=None)
import seaborn as sns
tips = sns.load_dataset("tips")
plt.figure(figsize=(10,10))
#可以设置四种文本格式,分别对应font_scale=0.8,1,1.3 ,1.6
sns.set_context("paper")
plt.subplot2grid((2,2),(0,0))
sns.set_context("notebook")
plt.subplot2grid((2,2),(0,1))
sns.set_context("talk")
plt.subplot2grid((2,2),(1,0))
sns.set_context("poster")
plt.subplot2grid((2,2),(1,1))

在这里插入图片描述

2.3 调色板

color_palette()和set_palette()是两个基本的调色板函数,用于建立和设置调色板。

color_palette(palette=None, n_colors=None, desat=None)
set_palette(palette, n_colors=None, desat=None, color_codes=False)
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值