seaborn库的使用

seaborn库


 

0.设置seaborn风格

  • sns.set(style="darkgrid")
    • 5种风格:darkgrid(默认), whitegrid,dark, white, ticks
  • sns.set_context(context=None, font_scale=1):设置绘图背景参数,涉及标签、线条和其他元素大小,但与整体风格无关
    • context参数包括:paper,talk,poster or a dict or None
    • font_scale参数用于放缩字体大小
  • .set_axis_labels(xlabel,ylabel):设置轴标签
import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
sns.set_context("talk")
sns.set(style="ticks")
df = sns.load_dataset('anscombe')

 
 

一、Relational plots 关系类图表

1.relplot() 关系类图,散点图和线图的集合

  • seaborn.relplot(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):线图或散点图
    • data:数据,必须是DataFrame类型
    • x/y:变量名或向量
    • hue/size/style:用不同颜色/大小/样式对元素进行分组
    • row,col:形成多个图(按行/列出现图),为数据的变量名
    • col_wrap:可以将多列以多行的形式展现
    • kind:散点图或线图{‘scatter’,‘line’}
    • height:每个图的高度
    • aspect:每个图的长宽比
    • legend:指定图例的形式。{‘brief’,‘full’,or False}
fmri = sns.load_dataset("fmri")
sns.relplot(x="timepoint", y="signal",hue="event", style="event", col="region",
            kind="line", data=fmri)
plt.show()

如图,

在这里插入图片描述
 
 

2.scatterplot() 散点图

  • seaborn.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,hue:输入数据或变量名
    • data:DataFrame类型
    • hue/size/style:变量名或向量。根据变量或向量对不同类别的数值用不同颜色/大小的点/标记物显示
    • palette:调色板
    • hue_order/size_order/style_order:当hue/size/style是分类变量时指定分类变量的顺序排列,用一个列表指定(当hue/size/style是输入向量时,此项不起作用)
    • hue_norm/size_norm:当hue是输入向量时,对hue/size中涉及的数据单元进行标准化。tuple或Normalize object
    • sizes:当size使用时,用于指定不同类别的点的大小。可以是list(里面是size值)或dict(每个等级对应的size)。当size是向量时,可以是一个tuple,规定最大最小的size,使其他值限定在这个范围内
    • markers:当使用style变量来使不同类别用不同标志物显示时,markers用于指定哪些类别用哪些标记。若为True,默认的标记;False则用实线、无标记来显示;可以输入list或dict指定不同等级不同标记
    • estimator,ci,n_boot,alpha,legend:同上下文
sns.set(style="dark")
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), hue_norm=(0, 7), legend="full", data=tips)
plt.show()

如图,


在这里插入图片描述
 
 

3.lineplot() 折线图(时间序列图)

  • seaborn.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, sort=True, err_style='band', err_kws=None, legend='brief', ax=None, **kwargs):绘制线段,所传数据必须为一个pandas数组
    • data:pandas中的DataFrame类型的
    • x,y:输入数据或变量名(hue:在同一张图上分类)
    • hue:对生成的不同颜色的线段进行分组,data中的变量名或向量
    • size:对生成的不同宽度的线段进行分组,data中的变量名或向量
    • style:对生成的不同线段、标记等的变量进行分组,data中的变量名或向量
    • palette:设置hue指定变量不同级别的颜色,一般是seaborn内置调色板名称或列表字典
    • hue_order/size_order:指定hue/size变量出现的顺序
    • hue_norm/size_norm:hue/size变量为数值型时,对应用了不同颜色级别/不同大小的数据进行标准化处理;当hue变量是类别时,则不处理。tuple或Normalize对象
    • sizes:当size使用时,确定size对象,可以是size值的列表或size到sizes映射级别的字典。当size是数值型时,可以是一个元组,指定最大最小值,对范围外的其他值进行标准化。
    • dasher/markers:指定使用不同风格时线段/标记的样式,True默认风格或可以用list/dict指定,False则使用实线段/无标记的线段
    • units:用于不需要精确标识的情况下显示实验重复的分布。根据抽样单元对变量进行分组,为每个单元绘制一个单独的行
    • ci:指定置信区间
sns.set(style="darkgrid")
fmri = sns.load_dataset("fmri")
sns.lineplot(x="timepoint", y="signal",
             hue="region", style="event",
             data=fmri)
plt.show()

如图,

在这里插入图片描述
 
 

二、Categorical plots 分类图表

1.catplot() 分类图表:分类散点图、分布密度散点图、箱图、小提琴图、增强箱图、点图、条形图、计数图

  • seaborn.catplot(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='strip', height=5, aspect=1, orient=None, color=None, palette=None, legend=True, legend_out=True, sharex=True, sharey=True, margin_titles=False, facet_kws=None, **kwargs):指定kind参数可以画出分类散点图、分布密度散点图、箱图、小提琴图、增强箱图、点图、条形图、计数图。
    • x,y,hue:输入数据或变量名(hue:在同一张图上分类)
    • data:DataFrame
    • row,col:data中的变量名。用于确定分类变量(根据变量名分为不同图,row按行显示,col按列显示)
    • col_wrap:指定图每行的张数,该参数最大只能等于col参数对应的不同类别的数量
    • estimator:指定每个分类bin中估计的统计函数。
    • ci:{float,‘sd’,None}。在估计值附近绘制置信区间大小。若为float,进行bootstrapping并指定置信水平;若为’sd’,不进行bootstrapping且绘制观测值的标准差;若为None,不绘制error bar且不进行bootstraping
    • n_boot:计算置信区间时bootstrapping的迭代次数
    • units:data中的变量名或数据的向量。当需要多层bootstrap抽样时指定用于抽样的单元
    • order,hue_order:指定分类变量绘制顺序
    • row_order,col_order:指定行/列变量的绘制顺序
    • kind:指定绘图了类型,{‘count’:计数图,‘point’:点图,‘bar’:条形图,‘strip’:分类散点图,‘swarm’:分布密度散点图,‘box’:箱线图,‘violin’:小提琴图,‘boxen’:增强箱线图}
    • height,aspect(纵横比),orient(图的方向v|h),color,palette,legend(图例)
    • legend_out:若为True,则扩展图形尺寸,图例将绘制在中间右侧的图形之外
    • share{x,y}:是否共享x/y轴。{True,False,‘col’,‘row’}。若为True,则共享x轴,y轴
    • margin_titles:若为True,则行变量标题将绘制在最后一列的右侧
# 第一张图:条形图
sns.set(style="whitegrid")
titanic = sns.load_dataset("titanic")
# a nested barplot
ax=sns.catplot(x="class", y="survived", hue="sex", data=titanic,
                height=6, kind="bar", palette="muted")
ax.despine(left=True)
ax.set_ylabels("survival probability")
plt.show()

# 第二张图
sns.set(style="whitegrid")
df = sns.load_dataset("exercise")
# 点图
ax = sns.catplot(x="time", y="pulse", hue="kind", col="diet",
                capsize=.2, palette="YlGnBu_d", height=6, aspect=.75,
                kind="point", data=df)
ax.despine(left=True)
plt.show()

图:

在这里插入图片描述
在这里插入图片描述
 
 

2.stripplot() 分类散点图

  • seaborn.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):分类散点图。
    • x,y,hue,data,order,hue_order:同上
    • jitter:True则有一个默认值。float指定数量。当散点太多且重叠时,这个参数就很有用,更容易看清楚分布。
    • dodge:当使用hue时,若为True,则在分类的轴上根据不同分类等级将点分离。否则,每一等级的点将绘制在其他等级的上面
    • orient,color,palette:同上
    • size:点的标记的大小(直径)
    • edgecolor:点周围线条的颜色
    • linewidth:构图元素灰线的宽度
import seaborn as sns
import matplotlib.pyplot as plt

sns.set()
tips = sns.load_dataset("tips")
ax = sns.stripplot("day", "total_bill", "smoker", data=tips, palette="Set2",
                   size=20, marker="D", edgecolor="gray", alpha=.25)

plt.show()

图,

在这里插入图片描述
 
 

3.swarmplot() 能够显示分布密度的分类散点图

  • seaborn.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的图,不同在于这些点被调整过不会重叠。可以更好表现数据的分布。但是不能很好地适用于大数据集。
    • x,y,hue,data,order,hue_order,dodge,orient,color,palette,linewidth:同上
    • size:标记点的直径大小
    • edgecolor:每个点旁边的线的颜色
sns.set(style="whitegrid", palette="muted")
iris = sns.load_dataset("iris")
iris = pd.melt(iris, "species", var_name="measurement")
sns.swarmplot(x="measurement", y="value", hue="species",palette=["g", "c", "y"], data=iris)
plt.show()

如图,


在这里插入图片描述
 
 

4.boxplot() 箱图

  • seaborn.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, notch=False, ax=None, **kwargs):箱线图
    • x,y,hue:指定变量名进行分组
    • data:DataFrame类型,数组等
    • order,hue_orde:指定分类变量绘制顺序
    • orient:绘图方向,{‘v’,‘h’}垂直或水平
    • saturation:控制颜色的原始饱和度
    • width:元素宽度或主要分组变量一个级别所有元素的宽度
    • fliersize:指定对异常值的标记的大小
    • linewidth:指定元素的灰线宽度
    • whis:指定超过两个四分位数时IQR的比例,超过此范围的点被识别为异常值
    • notch:是否使矩形框凹陷来显示中位数
sns.set(style="ticks", palette="pastel")
tips = sns.load_dataset("tips")

sns.boxplot(x="day", y="total_bill",
            hue="smoker", palette=["m", "g"],
            data=tips)
sns.despine(offset=10, trim=True)
plt.show()

如图,

在这里插入图片描述
 
 

5.violinplot() 小提琴图

  • seaborn.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:DataFrame类型,数组等
    • order,hue_order:同上
    • bw:核密度的带宽,{‘scott’,‘silverman’,float}
    • cut:以带宽大小为单位的距离,来控制小提琴图外壳延伸超过内部极端数据点的密度
    • scale:缩放图的宽度,{‘area’,‘count’, ‘width’}。area是每张图相同面积;count:宽度根据观察点的数量进行缩放;width:相同宽度
    • scale_hue:缩放比例是在分组变量上还是所有小提琴图上
    • width:设置宽度
    • inner:{“box”, “quartile”, “point”, “stick”, None}。box:微型箱线图;quartils:显示四分卫数线;point/stick:显示具体数据点;None,没有修饰
    • split:当有两种颜色的变量时,若为True则半边小提琴图对应一种颜色
    • orient:{‘v’,‘h’},垂直或水平绘图
    • linewidth,saturation同上
sns.set(style="whitegrid", palette="pastel", color_codes=True)
tips = sns.load_dataset("tips")

sns.violinplot(x="day", y="total_bill", hue="smoker",split=True, inner="quart",
               palette={"Yes": "y", "No": "b"},data=tips)
sns.despine(left=True)
plt.show()

如图,

在这里插入图片描述
 
 

6.boxenplot() 增强箱图

  • seaborn.boxenplot(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, k_depth='proportion', linewidth=None, scale='exponential', outlier_prop=None, ax=None, **kwargs):它类似于箱形图,在箱形图中绘制一个分布的非参数表示,其中所有特征都对应于实际观测值。通过绘制更多的分位数,它提供了关于分布形状的更多信息,特别是在尾部。
    • x,y,hue,data,order,hue_order,orient,color,palette,saturation(颜色饱和度):同上
    • width:不分类时,指定所有元素的宽度;分类时,是主要分类变量的一个级别中所有元素的宽度
    • dodge:当使用hue时,元素是否与分类的轴一起移动
    • k_depth:通过分位数的数量来确定箱子数{‘proportion’,‘tukey’,‘trustworthy’}。
    • linewidth:线宽
    • scale:{‘linear’,‘exponential’,‘area’}。确定箱子宽度的方法,视觉上结果相似。'linear’通过一个线性常数因子减少宽度;'exponential‘用未被涉及的数据的比例;'area’与涉及的数据比例成正比
    • outlier_prop:指定被认为是离群值的比例。与k_depth一起使用来确定分位数的数量。范围应当在[0,1]之间。
sns.set(style="whitegrid")
tips = sns.load_dataset("tips")
sns.boxenplot(x="day", y="total_bill", hue="smoker",data=tips, palette="Set3")
plt.show()

图,


在这里插入图片描述
 
 

7.pointplot() 点图

  • seaborn.pointplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=<function mean>, ci=95, n_boot=1000, units=None, markers='o', linestyles='-', dodge=False, join=True, scale=1, orient=None, color=None, palette=None, errwidth=None, capsize=None, ax=None, **kwargs):点图代表散点图位置的数值变量的中心趋势的估计,并使用误差线给出该估计的不确定性的衡量。比条形图更能比较一个或多个分类变量的不同级别。
    • x,y,hue:同上
    • data:同上
    • order,hue_order:同上
    • estimator,ci,n_boot,units:同上
    • marker:用于标记分类变量不同等级
    • linestyles:线的样式,可以给不同等级的分类变量用不同线的样式
    • dodge:当hue参数使用时,元素是否和分类轴一同移动。
    • join:若为True,同一等级的分类变量值将连线
    • scale:大小,float
    • orient,color,palette:同上
    • errwidth:error bar的宽度
    • capsize:error bar上caps的宽度
sns.set(style="darkgrid")
tips = sns.load_dataset("tips")
ax = sns.pointplot(x="time", y="total_bill", hue="smoker",data=tips,
                   markers=["o", "x"],linestyles=["-", "--"])
plt.show()

如图,


在这里插入图片描述
 
 

8.barplot() 条形图

  • seaborn.barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=<function mean>, ci=95, n_boot=1000, units=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的变量名(或者x,y是输入的数据),hue用于分组
    • data:DataFrame,array,list of arrays
    • order,hue_order:指定分类的顺序,列表的形式
    • estimator:用来估计的统计函数,标量的形式
    • ci:置信区间大小,{float,‘sd’,or None }.若是浮点值,则是置信水平值;若为’sd’,不进行bootstraping抽样,而绘制出标准差
    • n_boot:整数。需要计算置信区间时的bootstrap抽样的迭代次数
    • units:data中的变量名或数据的向量。当需要多层bootstrap抽样时指定用于抽样的单元
    • orient:{’v‘,’h‘},纵向或横向显示图
    • color,palette,saturation(颜色的原始饱和度)
    • errcolor,errwidth:代表置信区间的线的颜色/宽度
    • capsize:浮点数,在误差条上的’cap’的宽度
    • dodge:当hue参数使用时,元素是否和分类轴一同移动。
sns.set(style="whitegrid")

crashes = sns.load_dataset("car_crashes").sort_values("total", ascending=False)
f, ax = plt.subplots(figsize=(6, 15))
sns.set_color_codes("pastel")
# 条形图
sns.barplot(x="total", y="abbrev", data=crashes,
            label="Total", color="b")
sns.set_color_codes("muted")
sns.barplot(x="alcohol", y="abbrev", data=crashes,
            label="Alcohol-involved", color="b")
# 图例和轴的一些设置
ax.legend(ncol=2, loc="lower right", frameon=True)
ax.set(xlim=(0, 24), ylabel="",
       xlabel="Automobile collisions per billion miles")
sns.despine(left=True, bottom=True)

plt.show()

图,

在这里插入图片描述
 
 

9.countplot() 计数图

  • seaborn.countplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, dodge=True, ax=None, **kwargs):用bars显示每个类别观测值的数量。计数图可以被认为是分类的直方图。
  • 参数意义同上
sns.set()
titanic = sns.load_dataset("titanic")
ax = sns.countplot(x="class", hue="who", data=titanic, palette="Set3")
plt.show()

如图,


在这里插入图片描述
 
 

三、Distribution plot 分布图

1.jointplot() 双变量关系图

  • seaborn.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:当x,y指定的是变量名时,输入类型为DataFrame
    • kind:指定图的类型,{‘scatter’,‘reg’,‘resid’,‘kde’,‘hex’},hex是hexbin图的缩写,显示落在六边形仓内的观测数
    • color,height,ratio(轴高与边缘轴高之比),space(两轴之间空间,默认0.2)
    • dropna:若为True,剔除x,y上的缺失值
    • {x,y}lim:限制轴的值,两元素的元组
    • {joint,marginal,annot}_kws:其他参数的设置
# first,核函数图
sns.set(style="white")
rs = np.random.RandomState(5)
mean = [0, 0]
cov = [(1, .5), (.5, 1)]
x1, x2 = rs.multivariate_normal(mean, cov, 500).T
x1 = pd.Series(x1, name="$X_1$")
x2 = pd.Series(x2, name="$X_2$")
sns.jointplot(x1, x2, kind="kde", height=7, space=0)

# second,hexbin图
sns.set(style="ticks")
rs = np.random.RandomState(11)
x = rs.gamma(2, size=1000)
y = -.5 * x + rs.normal(size=1000)
sns.jointplot(x, y, kind="hex", color="#4CB391")

# third,回归图
sns.set(style="darkgrid")
tips = sns.load_dataset("tips")
sns.jointplot("total_bill", "tip", data=tips, kind="reg",
              xlim=(0, 60), ylim=(0, 12), color="m", height=7)
plt.show()

图:

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述
 
 

2.pairplot() 变量关系组图

  • seaborn.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:DataFrame类型
    • hue:变量名。用不同颜色显示不同类别
    • hue_order:确定变量等级的顺序。list of strings
    • palette:颜色板
    • vars:指定要使用的data中的变量
    • {x,y}_vars:图中行和列分别使用的变量
    • kind:绘制不同关系的图的类型。{‘scatter’,‘reg’}
    • diag_kind:绘制对角线上子图的类型。{’auto’,‘hist’,‘kde’}
    • markers:所有点的标记(string)或指定分类的每个等级不同标记(list)
    • height,aspect(宽:高),dropna(绘制前去除缺失值)
sns.set(style="ticks")
df = sns.load_dataset("iris")
sns.pairplot(df, hue="species")
plt.show()

在这里插入图片描述
 
 

3.distplot() 直方图,质量估计图

  • seaborn.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:数据,series、一维数组或列表
    • bins:直方图柱的数目,默认为None(系统指定数量)
    • hist/kde:是否绘制直方图/高斯核密度图
    • rug:是否在横轴上绘制rugplot图
    • {hist, kde, rug, fit}_kws:一些关键词参数
    • color:指定除曲线外的颜色
    • vertical:若为True,则x-y轴互换/显示在y轴
    • norm_hist:若为True,则直方图的高度显示密度而不是频数;核函数图默认为True
    • axlabel:横轴标签
    • ax:在参数设定的轴上绘图
sns.set(style="white", palette="muted", color_codes=True)
rs = np.random.RandomState(10)

# 设置一个2×2的画布
f, axes = plt.subplots(2, 2, figsize=(7, 7), sharex=True)
sns.despine(left=True)
# 生成数据
d = rs.normal(size=100)

# 第一张图:简单的直方图,蓝色(ax指定哪张图)
sns.distplot(d, kde=False, color="b", ax=axes[0, 0])

# 第二张图:核密度图,显示rug,红色
sns.distplot(d, hist=False, rug=True, color="r", ax=axes[0, 1])

# 第三张图:核密度图,填充阴影
sns.distplot(d, hist=False, color="g", kde_kws={"shade": True}, ax=axes[1, 0])

# 第四张图:直方图和核密度图
sns.distplot(d, color="m", ax=axes[1, 1])

plt.setp(axes, yticks=[])
plt.show()

如图,

在这里插入图片描述
 
 

4.kdeplot() 核函数密度估计图

  • seaborn.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:一维数组,在单变量时不输入,双变量作为第二个变量输入
    • shade:在曲线下方增加阴影(true/false)
    • shade_lowest:若为True,为核密度最低的范围着色,可以比较不同分布总体
    • kernel:核函数{‘gau’ | ‘cos’ | ‘biw’ | ‘epa’ | ‘tri’ | ‘triw’ },默认’gau’高斯核,双变量只能使用高斯核
    • vertical:若为True,密度图显示在x轴,即交换x-y轴
    • bw:用于确定双变量图每个核的大小、标量因子
    • cut:从极端数据点切割*bw
    • cmap:控制核密度区域的递进色彩方案
    • legend:若为True,添加图例
    • ax:坐标轴的一些设置
    • cbar:若为True且是双变量,那么添加颜色条;cbar_ax:指定绘制颜色条的坐标轴,若为空,则在主轴绘制
    • cumulative:若为True,绘制累计分布
sns.set(style="darkgrid")
iris = sns.load_dataset("iris")

# 根据iris数据集species属性划分子集
setosa = iris.query("species == 'setosa'")
virginica = iris.query("species == 'virginica'")

f, ax = plt.subplots(figsize=(8, 8))
ax.set_aspect("equal")

# 两个核函数图
ax = sns.kdeplot(setosa.sepal_width, setosa.sepal_length,
                 cmap="Reds", shade=True, shade_lowest=False)
ax = sns.kdeplot(virginica.sepal_width, virginica.sepal_length,
                 cmap="Blues", shade=True, shade_lowest=False)

# 添加注释
red = sns.color_palette("Reds")[-2]
blue = sns.color_palette("Blues")[-2]
ax.text(2.5, 8.2, "virginica", size=16, color=blue)
ax.text(3.8, 4.5, "setosa", size=16, color=red)

plt.show()

如图:

在这里插入图片描述
 
 

5.rugplot() 将数组中的数据点绘制为轴上的数据

  • seaborn.rugplot(a, height=0.05, axis='x', ax=None, **kwargs):将一个array上的数据点绘制在轴上
    • a:array向量。输入观测值
    • height:高度
    • axis:绘制在x或y轴上
sns.set()
titanic = sns.load_dataset("titanic")
ax = sns.rugplot(a=titanic['age'],height=0.2,axis='y')
plt.show()

图,


在这里插入图片描述
 
 

四、Regression plots 回归图

1.lmplot() 回归模型图

  • sns.lmplot(x,y,data,row=None,col=None,……)
    • 必要参数 x/y:变量名或向量,data:数据
    • row/col:根据原数据某属性在行/列上分类(不同的图)
    • col_wrap:指定图每行的张数,该参数最大只能等于col参数对应的不同类别的数量
    • aspect:长宽比,长:宽=aspect,默认为1
    • sharex/sharey:共享x/y轴,默认为true
    • hue:根据hue值分类显示
    • ci:控制回归的置信区间,ci=置信水平
    • x_jitter/y_jitter:给x/y轴随机增加噪声点,不影响回归直线
    • order:回归幂次,默认为一元线性回归,如=2是二元回归。
    • palette:调色板,seaborn的颜色色板或颜色的字典。
# dataset为上面导入的数据集anscombe
sns.lmplot(x="x", y="y", col="dataset", hue="dataset", data=df,
           col_wrap=2, ci=None, palette="muted", height=4,
           scatter_kws={"s": 50, "alpha": 1})
plt.show()

下图为一个例子:

在这里插入图片描述
 
 

2.regplot() 线性回归图

  • seaborn.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的值上,绘制出估计值(如,numpy.mean
    • x_bins:将x变量绘制成分离的bins,然后估计中心趋势和置信区间。形成的直方只会影响图上的散点而不会影响回归线的绘制,回归线仍然拟合的是原数据。当这个参数使用时,x_estimator默认是numpy.mean。参数可以是大小相同的bins的数量(int)或bin中心的位置(vector)
    • x_ci:{‘ci’,‘sd’,int in [0,100] ,None}。‘ci’,使用ci参数的值;‘sd’,显示标准差(不会进行bootstrap);int,置信水平
    • scatter:若为True,则绘制散点图
    • fit_reg:若为True,绘制x和y之间的回归模型
    • ci:(通过bootstrap得到的)置信水平,int in [0,100]。
    • n_boot:bootstrap抽样次数以估计
    • units:data中的变量名或数据的向量。当需要多层bootstrap抽样时指定用于抽样的单元
    • order:多项式的阶数
    • logistic:若为True,假设y是二元变量,估计一个逻辑回归模型
    • lowess:若为True,估计一个非参数lowess(局部加权线性回归)模型。
    • robust:若为True,估计鲁棒回归
    • logx:若为True,估计y和log(x)的线性回归。(x必须为正数)
    • {x,y}_partial:矩阵(与x相同的维度)或变量名。这些变量将在绘图前被去除
    • truncate:若是False,则在绘制完散点图后将回归线填满x轴。若为True,将受到数据限制。
    • x_jitter/y_jitter:给x/y轴随机增加噪声点,不影响回归直线
sns.set()
tips = sns.load_dataset("tips")
ax = sns.regplot(x="total_bill", y="tip", data=tips,marker="+",x_estimator=np.mean,x_bins=4)
plt.show()

图,


在这里插入图片描述
 
 

3.residplot() 线性回归残差图

  • seaborn.residplot(x, y, data=None, lowess=False, x_partial=None, y_partial=None, order=1, robust=False, dropna=True, label=None, color=None, scatter_kws=None, line_kws=None, ax=None):线性回归残差图。绘制残差的散点图和y与x的回归
    • x,y:向量或变量名
    • data:DataFrame
    • lowess:若为True,则拟合局部加权线性回归的残差散点图
    • {x,y}_partial:矩阵(与x相同的维度)或变量名。这些变量将在绘图前被去除
    • order:计算残差时拟合的多项式的阶数
    • robust:若为True,拟合一个鲁棒线性回归
    • dropna:若为True,拟合和绘图时忽略缺失值
    • label:图例标签
sns.set(style="whitegrid")
rs = np.random.RandomState(7)
x = rs.normal(2, 1, 75)
y = 2 + 1.5 * x + rs.normal(0, 2, 75)
sns.residplot(x, y, lowess=True, color="g")
plt.show()

如图,


在这里插入图片描述
 
 

五、Matrix plots 矩阵图

1.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):绘制颜色编码矩阵,即热力图
    • data:输入数据。可以是numpy包的array,或pandas的DataFrame(index和column会对应于热力图的rows和columns)
    • vmin,vmax:确定色彩映射的最大最小值,同时颜色条会显示出最大最小值。
    • cmap:数据值到颜色的映射
    • center:用于设置颜色条的分界线,可以调整整体图像的深浅。
    • robust:若为True且vmin,vmax其中一个为空值,那么使用分位数而不是极值来计算色彩映射范围
    • annot:是否在热力图单元格中显示数值(True or False)。也可以输入数组代替data中的数值
    • fmt:上面的数值的格式
    • annot_kws:annot为True时,一些对它的设置
    • linewidths:指定隔开每个单元格的线宽度
    • linecolor:指定隔开每个单元格的线的颜色
    • cbar:是否绘制颜色条
    • cbar_kws:颜色条的一些设置
    • cbar_ax:指定绘制颜色条的轴,不指定则从主轴选择
    • square:若为Ture,则使每个单元格为方形
    • xticklabels/yticklabels:可以是{True,False,‘auto’,list,int}。若为True/False,绘制/不绘制列名称;若是列表,则用列表的值作为轴标签;若是整数,则使用列名称且之显示整数值个标签;若是’auto’,密集绘制不重叠的标签。
    • mask:输入一个布尔值的数组,在为True的单元格中,屏蔽具有缺失值的单元格。
sns.set()
flights_long = sns.load_dataset('flights')
flights = flights_long.pivot('month', 'year', 'passengers')
f, ax = plt.subplots(figsize=(9, 6))
sns.heatmap(flights, annot=True, fmt="d", linewidths=0.5,
            linecolor='white', ax=ax)
plt.show()

下图为一个例子:

在这里插入图片描述
 
 

2.clustermap() 聚集图

  • seaborn.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:二维数据
    • pivot_kws:可以为pivot提供关键字参数来创建一个矩形数组
    • method:计算clusters的方法
    • metric:数据所用的距离矩阵
    • z_score:{0,1,None}.是否给行(0)或列(1)计算z分数(=(x-mean)/std
    • standard_scale:{0,1,None}。行/列是否标准化(=(x-min)/max
    • figsize:图的大小,含有两个元素的tuple
    • cbar_kws:颜色条的一些设置
    • {row,col}_cluster:若为True,将行/列聚集在一起
    • {row,col}_linkage:为行/列预先计算连接矩阵。输入为numpy.array
    • {row,col}_color:用于评估一个组内的样本是否聚集在一起。可以使用嵌套列表或DataFrame进行多种颜色级别的标记。如果以DataFrame或Series的形式给出,则颜色的标签将从DataFrames列名或Series的名称中提取。DataFrame/Series颜色也通过它们的索引与数据匹配,以确保按正确的顺序绘制颜色。
    • mask:输入一个布尔值的数组,在为True的单元格中,屏蔽具有缺失值的单元格。
sns.set()
iris = sns.load_dataset("iris")
ax = sns.clustermap(iris,  cmap="mako")
plt.show()

图,

在这里插入图片描述
 
 

六、子图网格

1.FacetGrid()多图网格

  FacetGrid是一个绘制多个图标的接口。步骤:

  • 实例化对象
  • 映射到具体seaborn图表类型(map)
  • 添加图例
  • seaborn.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:DataFrame数据
    • row,col,hue:data中的变量名
    • {row,col,hue}_order:给指定级别排序
    • col_wrap:限制网格的列维度,以便列面跨越多行
    • sharex/sharey:是否共享x/y轴
    • height,aspect(宽:高),palette
    • legend_out:如果为True,则图形尺寸将被扩展,图例将绘制在中间右侧的图形之外。
    • despine:若为True,将移除顶部和右侧边缘框架
    • margin_titles:若为True,则行变量标题将绘制在最后一列的右侧
    • xlim/ylim:当sharex和sharey为True时,可以对轴进行限制
sns.set()
tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips, col="time",  hue="smoker")
g = (g.map(plt.scatter, "total_bill", "tip", edgecolor="w").add_legend())
plt.show()

sns.set(style='white')
tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips, col="size", col_wrap=3,sharey=False,sharex=False)
g = (g.map(plt.hist, "tip", bins=np.arange(0, 13), color="c").set_titles("{col_name} diners"))
plt.show()

图,

在这里插入图片描述 在这里插入图片描述

 
 

2.PariGrid()成对关系的网格

  • seaborn.PairGrid(data, hue=None, hue_order=None, palette=None, hue_kws=None, vars=None, x_vars=None, y_vars=None, diag_sharey=True, height=2.5, aspect=1, despine=True, dropna=True, size=None):绘制成对关系的网格
    • vars:变量名的list。将使用这些变量;否则使用data中所有数值型变量
    • x_vars/y_vars:变量名的list。分别用于行/列的变量
    • dropna:在绘制前删除缺失值
sns.set(style='darkgrid')
iris = sns.load_dataset("iris")
g = sns.PairGrid(iris)
g = g.map_diag(plt.hist, edgecolor="w")
g = g.map_offdiag(plt.scatter, edgecolor="w", s=40)
plt.show()

sns.set(style='darkgrid')
iris = sns.load_dataset("iris")
g = sns.PairGrid(iris)
g = g.map_upper(plt.scatter)
g = g.map_lower(sns.kdeplot, cmap="Blues_d")
g = g.map_diag(sns.kdeplot, lw=3, legend=False)
plt.show()

图,

在这里插入图片描述 在这里插入图片描述

发布了60 篇原创文章 · 获赞 2 · 访问量 1477

猜你喜欢

转载自blog.csdn.net/qq_40160983/article/details/104437331