数据集地址: seaborn - https://github.com/mwaskom/seaborn-data
该类型直接连接数据集后绘图,简洁快速。按照功能分为以下五类 · 关系类 · 分类类 · 分布类 · 回归类 · 热图类
多元维度数据最常用的为散点图,如数据 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)输出结果:
带宽类数据,每个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')输出结果:
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)输出结果:
需要把数据的横轴设置成照单个属性区分成有限个等级,可用分类散点函数
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")输出结果:
需求绘制散点图时各点不重叠,可用此函数
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)输出结果:
主要参数: 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")输出结果:
以矩形条的方式展示数据的点估值和置信区间。用每个矩形的高度来表示数值变量的集中趋势的估计值,并提供误差条来显示估计值得不确定度。
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")输出结果:
独立变量/单变量可用
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')输出结果:
单变量或双变量可用核密度估计图
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])输出结果:
主要参数: 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"]))输出结果:
数据集中各数据列的成对关系。如有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"])输出结果:
主要参数: 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)输出结果:
线性回归拟合.
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)输出结果:
绘图高级入口
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)输出结果:
将矩形数据绘制为颜色编码矩阵
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)输出结果:
将矩阵数据集绘制成分层聚类热图
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)输出结果:
该类型工作方式是是使用数据集和用于构造网格的变量初始化 XXXGrid 对象,建立绘图网格;然后通过调用map()或者map_dataframe(),调用1.1中的部分基础绘图函数应用于每个子集;最后可以使用其他方法调整绘图。
data - 数据 row, col, hue - 分类类别 col_wrap - 网格列的维度 height, aspect - 高度,纵横比 row_oder, col_order, hue_order - 排序
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")data - 数据 hue - 数据分类 vars - 选定展示的数据 x_vars,y_ars - 横纵轴 kind - scatter / reg diag_kind - ‘auto’, ‘hist’, ‘kde’, None
func - 绘制函数
func - 绘制函数
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)输出结果:
x,y - 横纵参数 height , ratio - 各边的大小,及各边高度与大小之比
joint_func - 绘制画布中心的联合分布函数 marginal_func - 绘制两坐标轴的边缘分布函数
func - 绘图函数
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))输出结果:
·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))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))color_palette()和set_palette()是两个基本的调色板函数,用于建立和设置调色板。
color_palette(palette=None, n_colors=None, desat=None) set_palette(palette, n_colors=None, desat=None, color_codes=False)