python seaborn学习笔记

matplotlib 是 python 的绘图工具,这篇笔记记录了 matplotlib 库的使用。seaborn 库是以 matplotlib 库为基础的更高阶库,绘出的图也更加美观。使用 seaborn 库首先要导入。

import seaborn as sns

sns.set() 方法即可美化 matplotlib 画出的图形。美化的图形从白底变为了灰底,并且有网格,在图形颜色和字体等方面也有美化,例如。

sns.set()
x = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
y = [3, 4, 6, 8, 9, 10, 9, 11, 7, 8]
plt.plot(x, y)

set() 方法中还有一些参数可以设置。context 控制画的大小,可选值由大到小有 papernotebooktalkposterstyle 控制着样式,可选值有darkgridwhitegriddarkwhitetickspalette 为预设调色板,可选值有deepmutedbrightpasteldarkcolorblindfont 用于设置字体,font_scale 用于设置字体大小,color_codes 使用颜色字母缩写表示颜色。

seaborn 绘图分为关联图、类别图、分布图、回归图、矩阵图、组合图六大类别。

seaborn API 分为 Figure-level 和 Axes-level 两种,前者适合于快速绘图,后者与 matplotlib 更接近,绘图更加灵活。

目录

  • 关联图
  • 类别图
  • 分布图
  • 回归图
  • 矩阵图

关联图

当对数据进行关联分析时,可能会用到 replot 绘制关系图,scatterplot 绘制多维度分散散点图,lineplot 绘制线性图。实际上,replotscatterplotlineplot 的结合版本。前一个是 Figure-level 接口,后两个是 Axes-level 接口。

以下使用的数据来源于 iris 数据集。

!wget -nc "https://labfile.oss.aliyuncs.com/courses/2616/seaborn-data.zip"
!unzip seaborn-data.zip -d ~/

replot 是 relation plot 的缩写,主要有散点图和条形图两种样式。在绘制图形时指定 xy 的特征。

sns.relplot(x="sepal_length", y="sepal_width", data=iris)

加入类别特征进行着色。

sns.relplot(x="sepal_length", y="sepal_width", hue="species", data=iris)

设置 style 参数还可以给不同类别设置不同形状。

sns.relplot(x="sepal_length", y="sepal_width", hue="species", style="species", data=iris)

kind 参数设置为 line 还可以绘制折线图,会自动给出 95% 的置信区间。

sns.relplot(x="sepal_length", y="petal_length", hue="species", style="species", kind="line", data=iris)

绘制折线图还可以使用 lineplot,绘制散点图还可以使用 scatterplot,效果相同。

sns.lineplot(x="sepal_length", y="petal_length",
             hue="species", style="species", data=iris)

类别图

在类别图中,catplot() 是 Figure-level 接口,它是 categorical plots 的缩写。

sns.catplot(x="sepal_length", y="species", data=iris)

设置 kind 参数为 swarm 可以防止数据重叠,更好地观测数据分布。

sns.catplot(x="sepal_length", y="species", kind="swarm", data=iris)

还可以将其设置为 box 表示箱线图,violin 表示小提琴图,boxex 表示增强箱线图,point 表示点线图。bar 表示条形图,count 表示计数图。

上述各式图形还可以用 stripplot()swarmplot()boxplot()violinplot()boxenplot()pointplot()barplot()countplot()实现。

分布图

分布图用于可视化变量的分布情况,一般分为单变量分布和二元变量分布。

displot() 查看单变量分布,默认情况下绘制直方图和拟合核密度估计图。

sns.distplot(iris["sepal_length"])

设置 kdeFalse 则不会绘制拟合核密度估计图,设置 histFalse 则不绘制直方图。

sns.distplot(iris["sepal_length"], kde=False)
sns.distplot(iris["sepal_length"], hist=False)

kdeplot() 专门用于绘制核密度估计图。

sns.kdeplot(iris["sepal_length"])

jointplot() 用于绘制二元变量分布图,它可以设置 kind 参数。

sns.jointplot(x="sepal_length", y="sepal_width", data=iris)
sns.jointplot(x="sepal_length", y="sepal_width", data=iris, kind="kde")
sns.jointplot(x="sepal_length", y="sepal_width", data=iris, kind="hex")
sns.jointplot(x="sepal_length", y="sepal_width", data=iris, kind="reg")

pairplot() 更为强大,它可以一次性地将数据集中特征两两对比图全部绘制出来,对角线上是单变量分布图,其它地方则是二元遍历分布图。

回归图

regeplot() 绘制回归图仅需指定自变量和因变量,它会自动完成线性回归拟合。

sns.regplot(x="sepal_length", y="sepal_width", data=iris)

lmplot() 同样是绘制回归图,但它支持引入第三维度进行对比,例如分类别。

sns.lmplot(x="sepal_length", y="sepal_width", hue="species", data=iris)

矩阵图

heatmap() 用于绘制热力图。

import numpy as np
sns.heatmap(np.random.rand(10, 10))

clustermap() 支持绘制层次聚类图。

iris.pop("species")
sns.clustermap(iris)

更详细的资料参阅官网。

你可能感兴趣的:(Python,python)