python seaborn 散点图矩阵_Python可视化Seaborn库详解——绘图方法

在《Python可视化Seaborn库详解——绘图设置》一文中,我们介绍了Seaborn库的绘图参数设置,本文我们将介绍具体的绘图方法。

其实虽然Seaborn库看着绘图函数多,但有几个函数的泛化性非常强,通过参数的设置是可以绘出多种图形的。为了便于掌握这些函数,本文会对这些方法进行归纳整理,力争做到提纲挈领的目的。

01绘图方法分类

结合图形的性质,将常规的可视化图形分为了三类。

python seaborn 散点图矩阵_Python可视化Seaborn库详解——绘图方法_第1张图片

其中,线性关系所涉及到的是折线图和散点图,这两类图形在日常运用中非常常见;分类关系主要是描述不同维度下数据的统计结果,如条形图、箱图等;组合关系就类似于高级程序语言,它是由不同的基础图形组合而来的。

下面我们将一一介绍这些绘图方法。

02线性关系可视化

我们用泰坦尼克号数据作为案例,首先进行数据准备。

import seaborn as snsimport pandas as pdimport numpy as npdata_raw=pd.read_csv("数据源/Titanic/train.csv")df=data_raw.copy()df.columns=[x.lower() for x in df.columns]

relplotrelplot函数和待会要介绍的catplot函数一样,均是属于一般型方法,它通过kind参数可分别作折线图和散点图,而且也可通过col和row参数进行分面。另外,该函数要求的数据格式必须是DataFrame。下图为该函数的绘图。sns.relplot(x="passengerid",y="age",col="pclass",hue=None, row=None,kind='scatter',data=df)#kind为line,scatter;col表示按照该列进行分列绘图#下面是具体的折线图和散点图函数,但这两种方法均不能进行分面sns.lineplot(x="passengerid",y="age",data=df)sns.scatterplot(x="passengerid",y="age",data=df)

python seaborn 散点图矩阵_Python可视化Seaborn库详解——绘图方法_第2张图片

03分类关系可视化

分类关系有两个一般性绘图方法:catplot和distplot。

catplot该函数可以绘制八种分类图,并可以进行分面。每种分类图也有相应的函数,可以进行更细致的参数设置,但均不能进行分面。

sns.catplot(x="survived",y="age",hue=None,row=None,col=None, data=df,kind=j,ax=axes[i]) #hue对X轴进行二次分组,row按行分面,row按列分面,kind控制图形种类,#有strip,swarm,box,violin,boxen,point,bar,count,strip为默认值fig,axes=plt.subplots(3,3,figsize=(30,24))ax=axes.flatten()sns.stripplot(x="survived",y="age",data=df,ax=ax[0]) #条形散点图sns.swarmplot(x="survived",y="age",data=df,ax=ax[1]) #避免散点重叠的条形散点图sns.boxplot(x="survived",y="age",data=df,ax=ax[2]) #箱线图sns.countplot(x="survived",data=df,ax=ax[3]) #统计图sns.barplot(x="survived",y="age",data=df,ax=ax[4]) #条形图sns.violinplot(x="survived",y="age",data=df,ax=ax[5]) #小提琴图sns.boxenplot(x="survived",y="age",data=df,ax=ax[6]) #增强箱图sns.pointplot(x="survived",y="age",data=df,ax=ax[7]) #点图

python seaborn 散点图矩阵_Python可视化Seaborn库详解——绘图方法_第3张图片

上图为八种不同的分类图。

distplot直方图是较为特殊的分类关系图,虽然它属于分布函数,但也可视为一种分类。该函数通过hist和kde参数可控制绘制的图是直方图还是密度图,或是二者的结合。

fig,axes=plt.subplots(1,2,figsize=(12,5))sns.distplot(df["age"],bins=[0,20,40,60,80,100],hist=True,kde=False,ax=axes[0]) sns.distplot(df["age"],bins=[0,20,40,60,80,100],hist=False,kde=True,ax=axes[1]) sns.kdeplot(df["age"],shade=True,vertical=False) #核密度曲线

python seaborn 散点图矩阵_Python可视化Seaborn库详解——绘图方法_第4张图片

04组合关系可视化

组合关系包含的都是一些较为复杂的图,本文介绍三种。

pair该函数主要描述数据变量两两之间的关系图,默认都是散点图。

sns.pairplot(data=df[["age","sex","pclass","fare"]],hue="sex")

python seaborn 散点图矩阵_Python可视化Seaborn库详解——绘图方法_第5张图片

heatmap热力图是一款非常热门的图形,通过颜色来反映数据之间的关系。

sns.heatmap(data=df[["age","sex","pclass","fare"]].corr(),linecolor="white", annot=True,linewidths=0.1)#annot系数值是否显示#data最后是矩阵数据集,图形的行为矩阵的列,列为矩阵的行索引,如果是dataframe,则行为行索引

python seaborn 散点图矩阵_Python可视化Seaborn库详解——绘图方法_第6张图片

factorplot与FacetGrid这是两个分面函数,分面的意思就是在一张画布中画多个图形。

sns.factorplot(x="survived", y="age",row="sex",col="pclass", data=df, kind="strip")#多面板绘图

python seaborn 散点图矩阵_Python可视化Seaborn库详解——绘图方法_第7张图片

g=sns.FacetGrid(data=df,row="sex",col="pclass") #先画出轮廓g.map(sns.stripplot,"survived","age") #进行补充

python seaborn 散点图矩阵_Python可视化Seaborn库详解——绘图方法_第8张图片

其实这些分面图形通过catplot方面也是可以实现的。

sns.catplot(x="survived",y="age",col="pclass",hue=None, row="sex",kind='strip',data=df)

python seaborn 散点图矩阵_Python可视化Seaborn库详解——绘图方法_第9张图片

05结语

将这些方法进行归类后就会发现,熟记并掌握这些函数变得容易多了。其实,可视化的原理并不复杂,复杂的只是绘图细节部分。因为每种组成部分都有众多的参数,参数还有不同的取值。

当然了,常规的可视化需求我们采用默认设置就足够了!

你可能感兴趣的:(python,seaborn,散点图矩阵)