python seaborn_Python数据分析之Seaborn(样式风格)

d974915c05f74f9188187b7fdfc4f134

​Seaborn简介

Seaborn是一种基于matplotlib的图形可视化python库。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用Seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。同时它能高度兼容numpy与pandas数据结构以及scipy与statsmodels等统计模式。掌握Seaborn能很大程度帮助我们更高效的观察数据与图表,并且更加深入了解它们。

其有如下特点:

  • 基于matplotlib aesthetics绘图风格,增加了一些绘图模式
  • 增加调色板功能,利用色彩丰富的图像揭示您数据中的模式
  • 运用数据子集绘制与比较单变量和双变量分布的功能
  • 运用聚类算法可视化矩阵数据
  • 灵活运用处理时间序列数据
  • 利用网格建立复杂图像集

Seaborn样式

matplotlib与seaborn绘图比较

import seaborn as snsimport numpy as npimport matplotlib as mplimport matplotlib.pyplot as plt%matplotlib inline
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绘制
5d856ceda0434899a55e83aa3fe50d5f
sns.set() #采用seaborn默认设置sinplot()
2a231f623efe4b9a996db0977d4d1e2d

Seaborn 5种主题风格

  • darkgrid
  • whitegrid
  • dark
  • white
  • ticks
sns.set_style("darkgrid")sinplot()
2a231f623efe4b9a996db0977d4d1e2d
sns.set_style("whitegrid")sinplot()
f648a6cb182842d286ab766ee6d69ed8
sns.set_style("dark")sinplot()
620bdf5e0bde4766a9bf8a61378ac4bc
sns.set_style("white")sinplot()
3261a6ad4f834a51ad6e1cacad12ea18
sns.set_style("ticks")sinplot()
9c8f6d3e51644566a09ac8fb381f779f

用despine()移除轴线

样式white和ticks都可以通过去除上方和右方不必要的轴线来得到改善. 而这些是不可能在matplotlib里设置参数做到的,但是你可以调用seaborn的函数despine()来去除轴线:

sns.set_style("ticks")sinplot()sns.despine() # 去除上面与右面轴线
7a8909a981dc4f4f86c1c19b033258fa

有些布局也可以通过调整轴线距数据的偏移来改善,这也能在despine()里完成.当ticks不能覆盖轴线的整个范围时,trim参数可以限制显示的轴线的范围.

data = np.random.normal(size=(20, 6)) + np.arange(6) / 2 # (20, 6) 二维数据f, ax = plt.subplots()sns.violinplot(data) # 琴形图sns.despine(offset=10,trim=True)
8a5a3465ffa14fd19592531df92b60b4

你也可能通过设置另外的参数来控制移除哪条轴线:

sns.set_style("whitegrid")sns.boxplot(data=data, palette="deep") #箱型图sns.despine(left=True) #去除左边的轴线
66c441306bc6411ebed14de9cfa077f6

临时设置图表样式

尽管来回切换样式是很简单的,但是你也可以在with语句里用axes_style()函数来临时设置控制布局的参数.这也允许你用不同的风格来制作图表,这是一种常见的编程模式,使得控制样式和风格能够多变。

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

重载seaborn样式的元素

如果你想要自定义seaborn的样式,你可以用词典(dictionary)将一系列控制参数赋值给axes_style()函数和set_style()函数的rc参数里. 注意你只能通过这种方式重载样式定义的部分.(但是,更高级的set()函数可以处理包含任意matplotlib参数的词典)

如果你想要知道都包含了哪些参数,你可以调用没有参数的函数,它会返回当前设置:

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': ['sans-serif'], 'font.sans-serif': ['Arial',  'DejaVu Sans',  'Liberation Sans',  'Bitstream Vera Sans',  'sans-serif'], 'grid.color': '.8', 'grid.linestyle': '-', 'image.cmap': 'rocket', 'legend.frameon': False, 'legend.numpoints': 1, 'legend.scatterpoints': 1, 'lines.solid_capstyle': 'round', 'text.color': '.15', 'xtick.color': '.15', 'xtick.direction': 'out', 'xtick.major.size': 0.0, 'xtick.minor.size': 0.0, 'ytick.color': '.15', 'ytick.direction': 'out', 'ytick.major.size': 0.0, 'ytick.minor.size': 0.0}

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

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

使用plotting_context()和set_context()设置布局元素的规模

布局元素的规模被独立的参数集合控制,这能让你使用相同的代码得到不同大小的规模合适的布局

首先让我们重新调用set()函数得到缺省设置:

sns.set()

有4种预设好的上下文(context),按相对大小排序分别是:paper, notebook, talk,和poster.缺省的规模是notebook,上述的所有图表都是它.

sns.set_context("paper")plt.figure(figsize=(8, 6))sinplot()
d0c8b6773a384b299a925e46b7484e56
sns.set_context("talk")plt.figure(figsize=(8, 6))sinplot()
730af6b60a924856b2e5b7ea0a608e65
sns.set_context("poster")plt.figure(figsize=(8, 6))sinplot()
1fdc3fe47a8440ca9b8444e1d3abb42c

大部分你现在所稽首的样式函数都应该被转换成上下文函数.

你可以调用set_context(),将上下文的名字当作一个参数传入,然后你就可以通过提供一个写有各项设置值的词典重载上下文的参数。

在修改上下文时,你也可以单独修改字体大小。(更高级的set()里也可以这么做)

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

参考

[Style functions]http://seaborn.pydata.org/tutorial/aesthetics.html#aesthetics-tutorial

[Color palettes]http://seaborn.pydata.org/tutorial/color_palettes.html#palette-tutorial

[Distribution plots]http://seaborn.pydata.org/tutorial/distributions.html#distribution-tutorial

[Categorical plots]http://seaborn.pydata.org/tutorial/categorical.html#categorical-tutorial

[Regression plots]http://seaborn.pydata.org/tutorial/regression.html#regression-tutorial

[Axis grid objects]http://seaborn.pydata.org/tutorial/axis_grids.html#grid-tutorial
[10分钟python图表绘制]https://zhuanlan.zhihu.com/p/24464836

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值