Seaborn简介
matplotlib可能是基于Python最优秀的绘图库了。但是它的api数目比较多,较为复杂。
Seaborn基于matplotlib的核心库进行了更高级的封装。可以绘制出更高级的图形。
Seaborn的基本使用
由于Seaborn是基于matplotlib进行开发的。因此我们使用seaborn时只需正常使用matplotlib的api。外加简单的几句Seaborn函数即可:
import seaborn as sns
sns.set()
Seaborn绘图API概览
当然sns也自带绘图的API,你可以直接使用sns的API。
首先你要知道Seaborn绘图的API主要可以分为两类:
- Figure-level的,比如relplot。
- Axes-level的,比如scatterplot和lineplot。
这两个level的区别在于,figure-level像是懒人函数,适合于快速应用。而axes-plot的可以实现与matplotlib实现更加灵活和紧密的结合。
不过这些API的使用方法是大同小异的。比如说他们都有相同的属性:
- data属性:选择什么样的对象。
- x和y属性:选择哪些数据在图上当做x和y轴展示。
- hue:给每一个线段或者散点染色。
- style:设置每一个线段或者散点的格式。
关联图
涉及到关联性分析的时候,我们可以使用一下API
- replot:绘制关系图(即可以画散点,可以画线型图, 默认是画散点,你可以指定kind属性来选择话什么图形)
- scatterplot:专门绘制散点图。
- lineplot: 专门绘制线型图。
类别图
(我感觉这些图都差不多。。)
-
分类散点图:
stripplot()
(kind="strip"
)
swarmplot()
(kind="swarm"
)
-
分类分布图:
boxplot()
(kind="box"
)
violinplot()
(kind="violin"
)
boxenplot()
(kind="boxen"
)
-
分类估计图:
pointplot()
(kind="point"
)
barplot()
(kind="bar"
)
countplot()
(kind="count"
)
分布图
我们可以通过分布图查看变量的分布情况。一般分为单变量分布(这个好像没什么用),还有一个多变量分布(基本上都是两个变量,两个以上的变量很难绘制出直观的可视化图形)
不过说实话下面几个图并不是分布函数(CDF)的图,而是离散型随机变量PMF的图片。因为CDP必然是非降的。
一. 查看单变量分布
sns.distplot(iris["sepal_length"])
查看多变量分布我们一般适用jointplot函数:
二. 核密度估计函数
sns.jointplot(x="sepal_length", y="sepal_width", data=iris, kind="kde")
三. 六边形计数图
sns.jointplot(x="sepal_length", y="sepal_width", data=iris, kind="hex")
四. pairplot
这个应该是seaborn中最为强大的api了。它能够把所有特征两两分布图全部都画出来:
sns.pairplot(iris, hue="species")
矩阵图
矩阵图里最常用的两个图是heatmap
和clustermap
其中:
heatmap
是用来画热力图,用来研究各个变量之间的相关性的。clustermap
是用来使用层次聚类方法的。