Seaborn - 绘图美学

  • 简述

    可视化数据是一个步骤,进一步使可视化数据更令人愉悦是另一个步骤。可视化在向观众传达定量见解以吸引他们的注意力方面起着至关重要的作用。
    美学是指一组与美的本质和欣赏有关的原则,尤其是在艺术方面。可视化是一种以有效和最简单的方式表示数据的艺术。
    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
    • Dark
    • White
    • 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()
    

    输出

    暗面
    上面两个图的区别是背景颜色
  • 移除轴刺

    在 white 和 ticks 主题中,我们可以使用despine()函数。

    例子

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

    输出

    刺
    在常规图中,我们仅使用左轴和下轴。使用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()
    

    输出

    元素
  • 缩放绘图元素

    我们还可以控制情节元素,并且可以使用set_context()函数。我们有四个预设的上下文模板,根据相对大小,上下文命名如下
    • 笔记本
    • 讲话
    • 海报
    默认情况下,上下文设置为笔记本;并在上面的图中使用。
  • 例子

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

    输出

    缩放
    与上述图相比,实际图的输出大小更大。
    Note− 由于我们网页上的图像缩放,您可能会错过我们示例图中的实际差异。