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

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

绘图方法分类

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

python用seaborn画图(Python可视化Seaborn库详解绘图方法)(1)

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

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

线性关系可视化

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

importseabornassns importpandasaspd importnumpyasnp data_raw=pd.read_csv("数据源/Titanic/train.csv") df=data_raw.copy() df.columns=[x.lower()forxindf.columns]

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)

分类关系可视化

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

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

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)

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

直方图是较为特殊的分类关系图,虽然它属于分布函数,但也可视为一种分类。该函数通过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)

组合关系可视化

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

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

sns.heatmap(data=df[["age","sex","pclass","fare"]].corr(),linecolor="white",annot=True,linewidths=0.1,cmap='YlGnBu') #cmap即colormap plt的颜色对象,annot系数值是否显示, #矩阵数据集,行为矩阵的列名称,列为矩阵的行索引,如果是dataframe,则行为行索引

python用seaborn画图(Python可视化Seaborn库详解绘图方法)(5)

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

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

python用seaborn画图(Python可视化Seaborn库详解绘图方法)(6)

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

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)

结语

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

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

,