欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python 数据可视化

程序员文章站 2022-03-22 20:45:16
...

Seaborn 库 手册翻译

导语:

Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图。我在这里尽最大的努力对其进行翻译(统计狗也之前没看过英文计算机原著。。),方便大家进行查询~~~详细介绍可以看seaborn官方APIexample gallery

一、风格管理

1、控制图片的美术风格

  数据可视化能力是非常重要的。当你对数据集进行探索分析时,漂亮清晰的图表可以帮助你直观了解数据。数据可视化在你与客户的交流中也扮演着重要的角色,其形象化的帮助你传达数据本身的数量特征。从这个角度来讲做出引人注意的图表更是一项令人不可或缺的技术。
  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")))

  让我们定义一个函数去画出一些偏置的正弦波(?-?),我们将在此基础上展示不同的风格参数的效果。

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)

  如下便是matplotlib的默认效果。

sinplot()

Python 数据可视化
  运用set()函数将其转变为seaborn的默认风格。

sns.set()
sinplot()

Python 数据可视化
(Note that in versions of seaborn prior to 0.8, set() was called on import. On later versions, it must be explicitly invoked).
  Seaborn将matplotlib中的参数分为两个独立的部分。一部分负责设定图表的美术样式;另一部分负责缩放图表中的各种元素使之可以轻松的融入不同的上下文中。
  我们用两对函数作为操纵这些参数的接口。运用axes_style()set_style()函数控制风格;运用plotting_contextset_context函数缩放表内元素。对于这两组函数,每组中的首个会返回一个关于参数的字典,第二个会设定matplotlib的默认值。

Seaborn的图片样式

  Seaborn中有5个预设的主题:darkgrid, whitegrid, dark, white, and ticks。他们各自适合于不同的应用和个人偏好,默认的样式为darkgrid。如同上文演示的,网格线赋予了图像直观表达数据数量特点的能力,灰地白线(darkgrid)将图像与网格线清晰的区分出来。白底灰线(whitegrid)也有同样效果,只不过更适合大量数据的作图。

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

Python 数据可视化

  很多时候(尤其是当你主要想要利用图表来提供给人对于数据模式的印象),网格便不那么重要了。

sns.set_style("dark")
sinplot()

Python 数据可视化

sns.set_style("white")
sinplot()

Python 数据可视化

sns.set_style("ticks")
sinplot()

Python 数据可视化

移除数轴线

  样式whiteticks都可以通过去除上方和右方的数轴线来得到改善(当然不改也挺好)。这种操作可是不能通过调整matplotlib的参数来实现。但是你可以通过调用despine()函数做到。

sinplot()
sns.despine()

Python 数据可视化

  将坐标轴远离图像可以使一些图像变得更加美观,这一操作也可以通过despine()函数实现When the ticks don’t cover the whole range of the axis, the trim parameter will limit the range of the surviving spines.(当坐标轴不闭合时,trim参数将控制坐标轴可以覆盖数据的分布。??)offset参数控制坐标轴与图像之间的距离。

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

Python 数据可视化
  你也可以通过调整despine()中的参数来选择被移除掉的轴。
Python 数据可视化

临时设定图像样式

  尽管将样式调来调去并不困难(扯淡!!!),你依然可以在with语句中调用axes_style()函数去暂时设定画图参数。这各功能允许你用不同的样式画图。

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

Python 数据可视化

重载样式参数

  你可以通过向axes_style()set_style()函数中的rc参数传入字典的方式,对seaborn的样式进行定制。注意!通过这种方法,你仅仅只能重载那些关于样式的参数。(当然,对高级别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()

Python 数据可视化

缩放图中元素

  一组独立的参数用来控制图像的缩放。你可以用一行相同的代码来控制图像的缩放,使其适合不同的应用场景。

  首先我们调用set函数重设默认参数:

sns.set()

  有四种预设的contexts,按相对大小排序:papernotebooktalkposternotebook为默认值

sns.set_contest("paper")
sinplot()

Python 数据可视化

sns.set_context("talk")
sinplot()

Python 数据可视化

sns.set_context("poster")
sinplot()

Python 数据可视化
  Most of what you now know about the style functions should transfer to the context functions.

  你可以将我们所提到的缩放样式传入set_context并调用,当然也可以传入一个含有参数的字典重载各参数。

  你也可以独立的缩放字体大小(仅在*的set函数中可用)

sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 2.5})
sinplot()

Python 数据可视化

  同样(虽然可能没啥用),你可以采用在with语句中调用的方法,进行暂时的缩放。

  以上的功能可以快捷的在set函数中实现,这个函数同样规定了默认的调色板。我们将在下一章对此进行说明。


我总结一下啊

  1. 两种基础操作figure stylesScaling plot elements各有set_style()set_context两种set方法可以进行修改,另有两种with+方法进行暂时(对单个特别需求)进行操作。
  2. despine()可以对坐标轴进行操作。
  3. set函数,生命大和谐,*设定。
  4. 画图方法没变~~建立sub_plot +设定样式+画图指令。