作者:xiaoyu

微信公众号:Python数据科学

知乎:python数据分析师

最近在做几个项目的数据分析,每次用到seaborn进行可视化绘图的时候总是忘记具体操作。虽然seaborn的官方网站已经详细的介绍了使用方法,但是毕竟是英文,而且查找不是很方便。因此博主想从零开始将seaborn学习一遍,做一个总结,也希望供大家使用参考。

Seaborn简介

seaborn同matplotlib一样,也是Python进行数据可视化分析的重要第三方包。但seaborn是在 matplotlib的基础上进行了更高级的API封装,使得作图更加容易,图形更加漂亮。

博主并不认为seaborn可以替代matplotlib。虽然seaborn可以满足大部分情况下的数据分析需求,但是针对一些特殊情况,还是需要用到matplotlib的。换句话说,matplotlib更加灵活,可定制化,而seaborn像是更高级的封装,使用方便快捷。

应该把seaborn视为matplotlib的补充,而不是替代物。

Seaborn学习内容

seaborn的学习内容主要包含以下几个部分:

风格管理

绘图风格设置

颜色风格设置

绘图方法

数据集的分布可视化

分类数据可视化

线性关系可视化

结构网格

数据识别网格绘图

本次将主要介绍风格管理的使用。

风格管理 - 绘图风格设置

除了各种绘图方式外,图形的美观程度可能是我们最关心的了。将它放到第一部分,因为风格设置是一些通用性的操作,对于各种绘图方法都适用。

让我们先看一个例子。

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

转换为seaborn默认绘图,可以简单的用set()方法。

sns.set()

sinplot()

Seaborn 将 matplotlib 的参数划分为两个独立的组合。第一组是设置绘图的外观风格的,第二组主要将绘图的各种元素按比例缩放的,以至可以嵌入到不同的背景环境中。

操控这些参数的接口主要有两对方法:

控制风格:axes_style(), set_style()

缩放绘图:plotting_context(), set_context()

每对方法中的第一个方法(axes_style(), plotting_context())会返回一组字典参数,而第二个方法(set_style(), set_context())会设置matplotlib的默认参数。

Seaborn的五种绘图风格

有五种seaborn的风格,它们分别是:darkgrid, whitegrid, dark, white, ticks。它们各自适合不同的应用和个人喜好。默认的主题是darkgrid。

sns.set_style("whitegrid")

data = np.random.normal(size=(20, 6)) + np.arange(6) / 2

sns.boxplot(data=data);

sns.set_style("dark")

sinplot()

sns.set_style("white")

sinplot()

sns.set_style("ticks")

sinplot()

移除轴脊柱

white 和 ticks两个风格都能够移除顶部和右侧的不必要的轴脊柱。通过matplotlib参数是做不到这一点的,但是你可以使用seaborn的despine()方法来移除它们:

sinplot()

sns.despine()

一些绘图也可以针对数据将轴脊柱进行偏置,当然也是通过调用despine()方法来完成。而当刻度没有完全覆盖整个轴的范围时,trim参数可以用来限制已有脊柱的范围。

f, ax = plt.subplots()

sns.violinplot(data=data)

sns.despine(offset=10, trim=True);

你也可以通过despine()控制哪个脊柱将被移除。

sns.set_style("whitegrid")

sns.boxplot(data=data, palette="deep")

sns.despine(left=True)

临时设置绘图风格

虽然来回切换风格很容易,但是你也可以在一个with语句中使用axes_style()方法来临时的设置绘图参数。这也允许你用不同风格的轴来绘图:

with sns.axes_style("darkgrid"):

plt.subplot(211)

sinplot()

plt.subplot(212)

sinplot(-1)

覆盖seaborn风格元素

如果你想定制化seaborn风格,你可以将一个字典参数传递给axes_style()和set_style()的参数rc。而且你只能通过这个方法来覆盖风格定义中的部分参数。

如果你想要看看这些参数都是些什么,可以调用这个方法,且无参数,这将会返回下面的设置:

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

绘图元素比例

有一套的参数可以控制绘图元素的比例。

首先,让我们通过set()重置默认的参数:

sns.set()

有四个预置的环境,按大小从小到大排列分别为:paper, notebook, talk, poster。其中,notebook是默认的。

sns.set_context("paper")

sinplot()

sns.set_context("talk")

sinplot()

sns.set_context("poster")

sinplot()

你可以通过使用这些名字中的一个调用set_context()来设置参数,并且你可以通过提供一个字典参数值来覆盖参数。当改变环境时,你也可以独立的去缩放字体元素的大小。

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

sinplot()

同样的,你可以通过嵌入with语句临时的控制绘图的比例。

总结

介绍了Seaborn的5中绘图风格

移除轴脊柱

临时设置绘图风格

覆盖Seaborn风格元素

绘图元素比例缩放

下一节将会介绍颜色风格的使用。

关注微信公众号Python数据科学,获取 120G 人工智能 学习资料。

python seaborn教程_数据可视化Seaborn从零开始学习教程(一) 风格选择相关推荐

  1. python画图怎么调色_数据可视化Seaborn从零开始学习教程(二) 颜色调控篇

    作者:xiaoyu 微信公众号:Python数据科学 知乎:python数据分析师 Seaborn学习大纲 seaborn的学习内容主要包含以下几个部分: 风格管理 绘图风格设置 颜色风格设置 绘图方 ...

  2. python颜色参数palette_python数据可视化seaborn(一)—— 整体样式与调色板

    很久之前对seaborn有过一些涉及但是没有深入探究,这次有趁着有数据可视化的需求,就好好学一学 Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在 ...

  3. python plt包_Python 数据可视化-Matplotlib包学习笔记(一)

    Python 数据可视化 本文主要参照Matplotlib的官方教程进行整理,作为个人的学习笔记进行分享,欢迎相互讨论. Matplotlib包学习笔记(一) 本文主要简单介绍一下Matplotlib ...

  4. python box2d 教程_适合初学者的强化学习教程(1): python使用gym实践和注意事项

    作者:知乎@Ai酱 安装步骤和报错问题 安装 pip install gym 报错 AttributeError: module 'gym.envs.box2d' has no attribute ' ...

  5. python qt5 gui快速编程_现货正版 Python Qt GUI与数据可视化编程 pyqt5教程书籍 pyqt5快速开发与实战Qt5 GUI快速编程 计算机网络程序设计人民邮电出版社...

    热销单品 查看更多 > RMB:85.00 立即购买 RMB:63.50 立即购买 RMB:73.50 立即购买 RMB:49.50 立即购买 RMB:127.80 立即购买 RMB:66.00 ...

  6. ​再见 Seaborn!Altair 数据可视化已超神

    数据可视化对于通过将数据转换为视觉效果来揭示数据中隐藏的趋势和模式非常重要.为了可视化任何形式的数据,我们都可能在某个时间点使用过数据透视表和图表,如条形图.直方图.饼图.散点图.折线图.基于地图的图 ...

  7. python数据可视化第三方库有哪些_数据可视化!看看程序员大佬都推荐的几大Python库...

    数据可视化是数据分析中极为重要的部分,而数据可视化图表(如条形图,散点图,折线图,地理图等)也是非常关键的一环.Python作为数据分析中最流行的编程语言之一,有几个库可以创建精美而复杂的数据可视化, ...

  8. 51cto python数据分析系列课程 55g_热图_ Python数据分析系列视频课程--玩转数据可视化_数据可视化视频-51CTO学院...

    matplotlib包是基于Python平台的统计绘图利器,是在python平台上完成数据可视化不可或缺的工具,而基于matplotlib进一步开发的seaborn,更是将数据呈现与可视化的可用性推到 ...

  9. python程序员专用壁纸_数据可视化!看看程序员大佬都推荐的几大Python库

    数据可视化是数据分析中极为重要的部分,而数据可视化图表(如条形图,散点图,折线图,地理图等)也是非常关键的一环.Python作为数据分析中最流行的编程语言之一,有几个库可以创建精美而复杂的数据可视化, ...

最新文章

  1. oracle两表链接序列跳序,Oracle学习之 序列(Sequence)
  2. Ubuntu 根目录作用
  3. Red Hat Enterprise Linux(RHEL)中yum的repo文件详解
  4. linux rootfs编译进内核,九鼎x6818开发板笔记:uboot、kernel、rootfs编译和烧写
  5. 本地构建和自动化构建_如何构建最强大,最安全的家庭自动化系统
  6. postman数据保存在哪里_Postman 历史记录导出的解决方案
  7. mysql 同一帐号多次登录_freeradius2.1.3 防止用户帐号重复登录
  8. 站酷用HTML5播放视频,站酷:动效展示实践的问题及解决
  9. 最优化学习笔记(九)——基本的共轭方向算法
  10. 信息学奥赛一本通 2041:【例5.9】新矩阵
  11. 工信部:2015年宽带城市20兆农村4兆
  12. 【CentOS】 Nginx+jdk+tomcat 环境搭建
  13. [渝粤教育] 江苏农牧科技职业学院 兽医文化 参考 资料
  14. K-means聚类攻击类型
  15. python pipe_python pipe模块用法
  16. Jenkins的分布式构建及部署(master~slaver)
  17. 动图太大无法添加到微信表情怎么办?
  18. 手机长度px值_html长度尺寸单位px像素
  19. 8086汇编基础 debug mov al,'a'或者mov ax,'ab'错误的
  20. node.js使用Sequelize实现多表连接查询

热门文章

  1. 一款安卓工具集献给初入安卓开发的你
  2. 《Temporal Pyramid Network for Action Recognition》算法详解
  3. Betsy的旅行详解(c++)
  4. C#:实现DFA算法(附完整源码)
  5. 网站被CC攻击了如何应对?
  6. iOS32位和64位的坑
  7. 携程玩乐事业部怎么样_我创建了一个WatchOS应用,这是我在玩乐中学到的
  8. 有人说,现在创业的机会已经都错过了,现在创业一切都晚了,你怎么看?
  9. Openssl Encrypt
  10. 网络通信优化-传统IO流及如何优化IO操作