代谢性酸中毒原因

注册

 

发新话题 回复该主题

Python可视化Seaborn库详解 [复制链接]

1#
乌鲁木齐治疗白癜风最好的医院 https://m.39.net/baidianfeng/a_4306092.html

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

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

01绘图方法分类

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

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

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

02线性关系可视化

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

importseabornassnsimportpandasaspdimportnumpyasnpdata_raw=pd.read_csv(数据源/Titanic/train.csv)df=data_raw.copy()df.columns=[x.lower()forxindf.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)

03分类关系可视化

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

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

sns.catplot(x=survived,y=age,hue=None,row=None,col=None,data=df,kind=j,ax=axes)#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])#点图

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

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

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

04组合关系可视化

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

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

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

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

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

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

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

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

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

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

05结语

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

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

分享 转发
TOP
发新话题 回复该主题