Seaborn - Figure Aesthetic

可视化数据是一步,进一步使可视化数据更令人愉悦是另一个步骤.可视化在向观众传达量化见解以吸引他们的注意力方面起着至关重要的作用.

美学是指一系列关注美的本质和欣赏的原则,尤其是艺术.可视化是一种以有效和最简单的方式表示数据的艺术.

Matplotlib库高度支持自定义,但知道要调整哪些设置以实现有吸引力和预期的情节是人们应该注意的利用它.与Matplotlib不同,Seaborn包含定制主题和高级界面,用于自定义和控制Matplotlib数字的外观.

示例

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()函数 :

示例

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()

输出

输出

上述两项数字显示默认Matplotlib和Seaborn图的差异.数据的表示是相同的,但表示风格在两者中都有所不同.

基本上,Seaborn将Matplotlib参数拆分为两组 :

  • 情节样式

  • 情节比例

Seaborn图样式

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

  • Darkgrid

  • Whitegrid

  • 黑暗

  • 白色

  • Ticks

让我们尝试应用上述列表中的主题.我们在前面的例子中看到了该剧情的默认主题 darkgrid .

示例

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()

输出

Darkside

以上两个图之间的差异是背景颜色

去除轴刺

在白色和刻度主题中,我们可以使用 despine() function.

示例

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()

输出

Spines

In常规图,我们只使用左轴和下轴.使用 despine()函数,我们可以避免不必要的右轴和顶轴刺,Matplotlib不支持.

覆盖元素

如果要自定义Seaborn样式,可以将参数字典传递给 set_style()函数.可用的参数使用 axes_style()函数查看.

示例

import seaborn as sb
print sb.axes_style

输出

{'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}

更改任何参数的值将改变打印样式.

示例

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()

输出

Elements

缩放绘图元素

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

  • Paper

  • 笔记本

  • 谈话

  • 海报

默认情况下,上下文设置为笔记本;并在上面的图中使用.

示例

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()

输出

Scaling

实际绘图的输出大小更大与上述情节比较.

注意 : 由于我们网页上的图像缩放,您可能会错过我们示例图中的实际差异.