Python Seaborn教程

时间:2020-02-23 14:43:16  来源:igfitidea点击:

Python Seaborn教程

Seaborn是一个用于使用Python制作统计信息图表的库。
它基于matplotlib构建,还支持numpy和pandas数据结构。
它还支持SciPy的统计单位。

当我们尝试探索和理解数据时,可视化起着重要作用,Seaborn的目标是使其变得更容易并且成为过程的中心。
放眼来看,如果我们说matplotlib使事情变得简单而困难的事情成为可能,seaborn也会尝试以明确的方式使困难变得容易。
但是seaborn并不是matplotlib的替代品,可以认为它是对matplotlib的补充。

由于它是基于matplotlib构建的,因此我们经常会直接调用matplotlib函数以获取简单的图,因为matplotlib已经为其创建了高效程序。

完美的,可定制的高级界面以及将matplotlib的各种后端结合在一起,可以轻松生成具有出版物质量的图形。

为什么选择Seaborn?

Seaborn提供了多种功能,使其比其他框架更有用和更容易。
其中一些功能是:

  • 绘制统计时间序列数据的功能,具有灵活的估算和估算周围不确定性的表示
  • 用于可视化单变量和双变量分布或者在数据子集之间进行比较的函数
  • 可视化数据矩阵并使用聚类算法发现这些矩阵中的结构的函数
  • 用于构建图网格的高级抽象,可让您轻松构建复杂的可视化文件
  • Matplotlib图形样式的几个内置主题
  • 用于选择调色板的工具,以绘制精美的图表以显示数据中的图案
  • 拟合和可视化线性回归模型的工具,用于不同种类的自变量和因变量

Seaborn入门

要开始使用Seaborn,我们将其安装在我们的计算机上。

安装Seaborn

Seaborn假定您在设备上具有运行NumPY(1.8.2及更高版本),SciPy(0.13.3及更高版本)和pandas软件包的Python 2.7或者更高版本平台。

一旦安装了这些python软件包,我们就可以继续安装。
对于" pip"安装,请在终端中运行以下命令:

pip install seaborn

如果您喜欢conda,也可以使用conda进行软件包安装,请运行以下命令:

conda install seaborn

另外,您可以使用pip直接从GitHub安装开发版本:

pip install git+https://github.com/mwaskom/seaborn.git

使用Seaborn

安装完成后,可以通过导入在Python代码中轻松使用seaborn:

import seaborn

控制人物美学

在可视化方面,吸引人的图形很重要。

Matplotlib是高度可定制的,但同时又可能会很复杂,因为很难知道要调整哪些设置才能获得美观的图形。
Seaborn带有许多主题和用于控制matplotlib图形外观的高级界面。
让我们看看它的工作原理:

#matplotlib inline
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns

np.random.seed(sum(map(ord, "aesthetics")))

#Define a simple plot function, to plot offset sine waves
def sinplot(flip=1):
  x = np.linspace(0, 14, 100)
  for i in range(1, 7):
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
sinplot()

这是使用matplotlib默认值时的图:

如果您想切换到默认设置,只需调用"设置"功能:

sns.set()
sinplot()

Seaborn图样式

Seaborn提供了五个预设主题:白色网格,深色网格,白色,深色和刻度,每个主题都适合不同的应用程序以及个人喜好。

Darkgrid是默认选项。
白色网格主题类似,但更适合于具有大量数据元素的图,以切换到白色网格:

sns.set_style("whitegrid")
data = np.random.normal(size=(20, 6)) + np.arange(6)/2
sns.boxplot(data=data)

对于许多地块,网格是不必要的。
通过添加以下代码片段将其删除:

sns.set_style("dark")
sinplot()

或者尝试白色背景:

sns.set_style("white")
sinplot()

有时,您可能想给绘图添加一些另外的结构,这是刻度线派上用场的地方:

sns.set_style("ticks")
sinplot()

去除轴刺

您可以调用despine函数将其删除:

sinplot()
sns.despine()

一些图可以从数据中抵消尖峰。
当刻度线不能覆盖整个轴范围时,修剪参数将限制尚存的刺的范围:

f, ax = plt.subplots()
sns.violinplot(data=data)
sns.despine(offset=10, trim=True)

您还可以使用despine的附加参数来控制删除哪些刺:

sns.set_style("whitegrid")
sns.boxplot(data=data, palette="deep")
sns.despine(left=True)

临时设置图形样式

当需要临时设置图形样式时,axes_style()可以为您提供帮助:

with sns.axes_style("darkgrid"):
 plt.subplot(211)
 sinplot()
plt.subplot(212)
sinplot(-1)

海洋风格的主要元素

参数字典可以传递给axes_style()和set_style()的rc参数,以自定义图形。

注意:只有通过此方法属于样式定义的参数才能被覆盖。
出于其他目的,您应该使用set(),因为它需要所有参数。

如果要查看包含哪些参数,只需调用不带任何参数的函数,就会返回一个对象:

sns.axes_style()

{'axes.axisbelow': True,
'axes.edgecolor': '.8',
'axes.facecolor': 'white',
'axes.grid': True,
'axes.labelcolor': '.15',
'axes.linewidth': 1.0,
'figure.facecolor': 'white',
'font.family': [u'sans-serif'],
'font.sans-serif': [u'Arial',
 u'DejaVu Sans',
 u'Liberation Sans',
 u'Bitstream Vera Sans',
 u'sans-serif'],
'grid.color': '.8',
'grid.linestyle': u'-',
'image.cmap': u'rocket',
'legend.frameon': False,
'legend.numpoints': 1,
'legend.scatterpoints': 1,
'lines.solid_capstyle': u'round',
'text.color': '.15',
'xtick.color': '.15',
'xtick.direction': u'out',
'xtick.major.size': 0.0,
'xtick.minor.size': 0.0,
'ytick.color': '.15',
'ytick.direction': u'out',
'ytick.major.size': 0.0,
'ytick.minor.size': 0.0}

然后可以设置这些参数的不同版本:

sns.set_style("darkgrid", {"axes.facecolor": ".9"})
sinplot()

缩放图元素

让我们尝试操纵地块的比例。
我们可以通过调用set()来重置默认参数:

sns.set()

四个预设上下文是–纸张,笔记本,谈话和海报。
笔记本样式是默认样式,并在上面的图中使用:

sns.set_context("paper")
sinplot()
sns.set_context("talk")
sinplot()