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

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

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

01绘图方法分类

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

9358d109b3de9c82e53d9a7686c7b30d18d843b8.jpeg?token=df28c586b56ff86fdf1e36244d011a4a

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

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

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)

a08b87d6277f9e2f632ebe82f576da23b999f3eb.jpeg?token=3cff07e0e15c176578ee6033cc2caf94

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]) #点图

77c6a7efce1b9d169f12a0d2199887888d54647d.jpeg?token=3b3ec43466cfd9c6a9775811035aaaf8

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

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) #核密度曲线

060828381f30e924f37f1b9ca74e5d011c95f716.jpeg?token=a5527f84af23c38faec2af1b3a113397

04组合关系可视化

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

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

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

a044ad345982b2b708447542daebf8e877099b2f.jpeg?token=1a29967a5dd531ba4da1845dcc9620b1

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

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

71cf3bc79f3df8dcb7df843f2657418c4610280f.jpeg?token=500da2e329cede2a2910939c2a537237

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

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

u=2469742352,2964803079&fm=173&app=49&f=JPEG?w=640&h=425&s=0C207D320D436E4F50E9E1CA0000C0B1

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

7c1ed21b0ef41bd5ed4aaa62ba9cb2cc38db3ddc.jpeg?token=5a6c5b26bb8f9523ce0f1cd3ab8cfcb9

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

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

6f061d950a7b02084ed8dae7889fc1d4572cc875.jpeg?token=c4acc68abdd33fc65637baf4ebc34ee4

05结语

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值