Seaborn 简明教程

Seaborn - Figure Aesthetic

可视化数据是一个步骤,进一步美化可视数据则是另一个步骤。可视化在向受众传达定量洞察方面发挥着至关重要的作用,以吸引他们的注意力。

美学是指与自然和对美的欣赏有关的一组原则,尤其是在艺术中。可视化以尽可能有效和最简单的方式呈现数据的艺术。

Matplotlib 库高度支持自定义,但要知道需要调整哪些设置才能实现有吸引力和预期的情节,这是应该了解的。与 Matplotlib 不同,Seaborn 附带自定义主题和用于自定义和控制 Matplotlib 图形外观的高级界面。

Example

import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
   x = np.linspace(0, 14, 100)
   for i in range(1, 5):
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
sinplot()
plt.show()

这是使用默认 Matplotlib 绘制的情节 −

matplotlib

要将同一张图表更改为 Seaborn 默认值,请使用 set() 函数 −

Example

import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
   x = np.linspace(0, 14, 100)
   for i in range(1, 5):
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set()
sinplot()
plt.show()

Output

output

以上两幅图显示了默认 Matplotlib 和 Seaborn 图表之间的差异。数据的表示方式相同,但在两者中表示样式有所不同。

基本上,Seaborn 将 Matplotlib 参数分成两组 −

  1. Plot styles

  2. Plot scale

Seaborn Figure Styles

用于操作样式的界面是 set_style() 。使用此功能,您可以设置绘制的主题。根据最新更新版本,以下是可用的五种主题。

  1. Darkgrid

  2. Whitegrid

  3. Dark

  4. White

  5. Ticks

让我们尝试从上述列表中应用一个主题。绘图的默认主题 darkgrid 我们已在前面的示例中看到了。

Example

import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
   x = np.linspace(0, 14, 100)
   for i in range(1, 5):
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("whitegrid")
sinplot()
plt.show()

Output

darkside

以上两幅图的区别是背景色

Removing Axes Spines

在白色和刻度主题中,我们可以使用 despine() 函数删除顶部和右侧的轴刺。

Example

import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
   x = np.linspace(0, 14, 100)
   for i in range(1, 5):
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("white")
sinplot()
sb.despine()
plt.show()

Output

spines

在常规绘图中,我们只使用左和下轴。使用 despine() 函数,我们可以避免不必要的右和上轴刺,Matplotlib 中不支持这一点。

Overriding the Elements

如果您想自定义 Seaborn 样式,您可以将参数词典传递给 set_style() *function. Parameters available are viewed using *axes_style() 函数。

Example

import seaborn as sb
print sb.axes_style

Output

{'axes.axisbelow'     : False,
'axes.edgecolor'      : 'white',
'axes.facecolor'      : '#EAEAF2',
'axes.grid'           : True,
'axes.labelcolor'     : '.15',
'axes.linewidth'      : 0.0,
'figure.facecolor'    : 'white',
'font.family'         : [u'sans-serif'],
'font.sans-serif'     : [u'Arial', u'Liberation
                        Sans', u'Bitstream Vera Sans', u'sans-serif'],
'grid.color'          : 'white',
'grid.linestyle'      : u'-',
'image.cmap'          : u'Greys',
'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}

更改任何参数的值都将更改绘图样式。

Example

import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
   x = np.linspace(0, 14, 100)
   for i in range(1, 5):
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("darkgrid", {'axes.axisbelow': False})
sinplot()
sb.despine()
plt.show()

Output

elements

Scaling Plot Elements

我们还可以控制绘图元素,并且可以使用 set_context() 函数控制绘图的比例。我们有四个预设模板用于上下文,根据相对大小,将上下文命名如下

  1. Paper

  2. Notebook

  3. Talk

  4. Poster

默认情况下,上下文设置为笔记本;并用于上面的绘图中。

Example

import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
   x = np.linspace(0, 14, 100)
   for i in range(1, 5):
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("darkgrid", {'axes.axisbelow': False})
sinplot()
sb.despine()
plt.show()

Output

scaling

与上面的绘图相比,实际绘图的输出大小更大。

Note − 由于我们在网页上缩放图像,您可能会错过示例绘图中的实际差异。