Seaborn使用
Seaborn 是以 Matplotlib 为核心的高阶绘图库,提供更美观和多样化的可视化效果,下面将介绍常用的几种图的使用方法。
首先,比较下matplotlib和seaborn绘制相同图形的效果。
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
x = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
y_bar = [3, 4, 6, 8, 9, 10, 9, 11, 7, 8]
y_line = [2, 3, 5, 7, 8, 9, 8, 10, 6, 7]
plt.bar(x, y_bar)
plt.plot(x, y_line, '-o', color='y')
![](https://i-blog.csdnimg.cn/blog_migrate/4e95cab9b64a044ccf8c161987b7b8be.png)
sns.set(style="white") #整体布局风格设置
#默认参数
sns.set(context='notebook', style='darkgrid', palette='deep', font='sans-serif', font_scale=1, color_codes=False, rc=None)
plt.bar(x, y_bar)
plt.plot(x, y_line, '-o', color='y')
![](https://i-blog.csdnimg.cn/blog_migrate/5fcfef2baa771ae94e168195e62c3765.png)
关联图
relplot 绘制关系图
scatterplot 多维度分析散点图
lineplot 多维度分析线形图
tips = sns.load_dataset("tips")
tips.head()
g = sns.relplot(x="total_bill", y="tip", hue="day", data=tips)
![](https://i-blog.csdnimg.cn/blog_migrate/110eedd2e45b8ded9b81aaef3ef6eae1.png)
g = sns.relplot(x="total_bill", y="tip", hue="day", style='day',data=tips)
![](https://i-blog.csdnimg.cn/blog_migrate/31a6192d17d87b752bed12eb0b1b67e5.png)
g = sns.relplot(x="total_bill", y="tip", hue="day",
col="time", row="sex", data=tips)
![](https://i-blog.csdnimg.cn/blog_migrate/9212180293a8f67dc98c438a18f6f257.png)
类别图
与关联图相似,类别图的 Figure-level 接口是 catplot,其为 categorical plots 的缩写。
而 catplot 实际上是如下 Axes-level 绘图 API 的集合:
分类散点图:
stripplot() (kind=“strip”)
swarmplot() (kind=“swarm”)
分类分布图:
boxplot() (kind=“box”)
violinplot() (kind=“violin”)
boxenplot() (kind=“boxen”)
分类估计图:
pointplot() (kind=“point”)
barplot() (kind=“bar”)
countplot() (kind=“count”)
exercise = sns.load_dataset("exercise")
exercise.head()
![](https://i-blog.csdnimg.cn/blog_migrate/85dccd7d82bad5c5d33c9310dd209ab5.png)
g = sns.catplot(x="time", y="pulse", hue="kind", kind="point",data=exercise)
![](https://i-blog.csdnimg.cn/blog_migrate/8f74be9d88bbff2c5cbbfb1e75f9be9a.png)
catplot 绘图效果:
该方法默认是绘制 kind=“strip” 散点图
box 箱线图
violin 小提琴图
boxen 增强箱线图
point 点线图
bar 条形图
count 计数条形图
分布图
分布图主要是用于可视化变量的分布情况,Seaborn 提供的分布图绘制方法一般有这些: jointplot,pairplot,distplot,kdeplot
#查看单变量分布
g = sns.distplot(tips["total_bill"])
![](https://i-blog.csdnimg.cn/blog_migrate/f134e5ddb473f71daa67bbd87c003e4f.png)
#jointplot 主要是用于绘制二元变量分布图
g = sns.jointplot(x="total_bill", y="tip", data=tips)
![](https://i-blog.csdnimg.cn/blog_migrate/6cc0971303686cc273c70411014ee93d.png)
g = sns.jointplot(x="total_bill", y="tip", kind='kde', data=tips)#核密度估计
![](https://i-blog.csdnimg.cn/blog_migrate/ec9be3f56db09cc4a362ddb3dc08dd60.png)
g = sns.jointplot(x="total_bill", y="tip", kind='hex', data=tips)#六边形图
![](https://i-blog.csdnimg.cn/blog_migrate/044283972f2cb53da43ba64088ab86d6.png)
g = sns.jointplot(x="total_bill", y="tip", kind='reg', data=tips)#回归拟合图
![](https://i-blog.csdnimg.cn/blog_migrate/a7af4a9594f6891e4b0b601431fc646d.png)
#将数据集中的特征变量两两对比绘图,对角线上是单变量分布,其他是二元变量分布
sns.pairplot(tips)
![](https://i-blog.csdnimg.cn/blog_migrate/ce69edc829d472edb64a20386c3d4a0d.png)
回归图
回归图的绘制函数主要有:lmplot 和 regplot
#regplot 绘制回归图时,只需要指定自变量和因变量即可,regplot 会自动完成线性回归拟合
sns.regplot(x="total_bill", y="tip", data=tips)
![](https://i-blog.csdnimg.cn/blog_migrate/8195e4c504b3c29a64fdb576411e1a67.png)
#lmplot 支持引入第三维度进行对比
sns.lmplot(x="total_bill", y="tip", hue="time", data=tips)
![](https://i-blog.csdnimg.cn/blog_migrate/30cb273b476bfc3086fea189994d01a6.png)
矩阵图
矩阵图包括heatmap、clustermap
import numpy as np
uniform_data = np.random.rand(10, 12)
ax = sns.heatmap(uniform_data,cmap="YlGnBu")
![](https://i-blog.csdnimg.cn/blog_migrate/bd8dcfdf341cb4f2172f82be5abd52a2.png)
#data:2D array-like
sex = tips.pop("sex")
smoker = tips.pop("smoker")
day = tips.pop("day")
time = tips.pop("time")
size = tips.pop("size")
g = sns.clustermap(tips)
![](https://i-blog.csdnimg.cn/blog_migrate/50b3722e8e48c2b7c5396317aaf9288e.png)