各位同学好,今天和大家分享一下如何使用 seaborn 库进行数据可视化。在 matplotlib 的基础上进一步美化绘图。主要内容有:默认风格 sns.set(), 主题风格 sns.set_style(), 边框控制 sns.despine(),  局部图表风格 axes_style(), 绘图样式设置 sns.set_context()


1. 默认风格设置 sns.set()

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# matplot绘制正弦函数
x = np.linspace(0, 14, 100)  # 在0-14之间取出100个点# 绘制5条正弦线
plt.figure()
for i in range(5):plt.plot(x, np.sin(x+i*0.5)*(7-i))# 设置绘图画风组合,调用seaborn的模板库
plt.figure()
sns.set()  # 使用seaborn默认的绘图风格
for i in range(5):plt.plot(x, np.sin(x+i*0.5)*(7-i))

左图为原始曲线,右图为设置画风后的曲线

 


2. 主题风格 sns.set_style()

seaborn 库提供了五种绘图风格,分别是:darkgrid(灰色网格),whitegrid(白色网格),dark(深色),white(白色),ticks(刻度线段)

在绘图之前,先指定图像的主题风格,sns.set_style( 'darkgrid' ),如下。

plt.figure()  # 新建画图板
sns.set_style('darkgrid')  # 设置风格
data = np.random.normal(size=(20,6)) + np.arange(6)/2 # 自定义数据
sns.boxplot(data=data) # 绘制盒图
plt.title('darkgrid')  # 设置标题

接下来绘制其他四种主题风格

fig = plt.figure(figsize=(10,8))  # 创建新画板
styleList = ['whitegrid', 'dark', 'white', 'ticks']  # 设置其他几种风格# 循环绘制其他几种风格
for i, style in enumerate(styleList):sns.set_style(style)  # 先设置风格plt.subplot(2,2,i+1)  # 再指定当前图的位置data = np.random.normal(size=(20,6)) + np.arange(6)/2 # 自定义数据sns.boxplot(data=data) # 绘制盒图plt.title(style)  # 设置标题fig.tight_layout()  #自动调节布局重叠问题 


3. 函数 despine() 控制边框

3.1 删除上侧和右侧边框 sns.despine()

设置绘图的主题风格为 ticks,即每个坐标轴都有刻度线段,如上图中的右下图。通过 sns.despine() 删除图像上的上侧和右侧的坐标轴线。

#(3)去除绘图框上边缘和右边缘的刻度线
plt.figure(figsize=(10,5))  # 新建画板
x = np.linspace(0, 14, 100)  # 设置x轴,0-14之间取100个数
sns.set_style('ticks')   # 设置绘图风格# 绘制五条正弦曲线
for i in range(5):plt.plot(x, np.sin(x+i*0.5)*(7-i))
# 删除上侧和右侧边缘线
sns.despine()
# 设置标题
plt.title('despine')


3.2 边框位移 sns.despine(offset, trim)

使用 sns.despine(offset, trim) 函数完成边框位移,其中参数: offset 代表x和y坐标轴偏移量trim=False 代表坐标轴没有限制; trim=True 将坐标轴限制在数据最大最小值之间

如下,通过设置 sns.despine(offset=50, trim=True) ,使图像距离x轴和y轴的距离都是50,而x轴的坐标轴刻度范围是从0到14,y轴的坐标轴刻度范围是从-6到6

# 设置x轴刻度
x = np.linspace(0, 14, 100) # 在0-14之间取出100个点
fig = plt.figure() # 新建画图板plt.subplot(2,1,1) # 绘图位置
# 移动坐标后的曲线
for i in range(5):plt.plot(x, np.cos(x+i*0.5)*(7-i))
# 移动轴线
sns.despine(offset=50, trim=True)  # 图像与x轴和y轴之间的距离
# 设置标题
plt.title('trim=True')plt.subplot(2,1,2) # 绘图位置
# 移动坐标后的曲线
for i in range(5):plt.plot(x, np.cos(x+i*0.5)*(7-i))
# 移动轴线
sns.despine(offset=50)  # 图像与x轴和y轴之间的距离
# 设置标题
plt.title('trim=False')fig.tight_layout()  #轻量化布局


3.3 自定义隐藏边框 sns.despine(right, left, top, bottom) 

使用 sns.despine() 默认参数可以隐藏图像的上侧和右侧的边缘框,如果想自定义隐藏边界框,可以设置参数,sns.despine(right=True, left=False, top=True, bottom=False) 同样能实现隐藏上侧和右侧边界框

sns.set_style('ticks')  # 设置风格
data = np.random.normal(size=(20,6)) + np.arange(6)/2 # 自定义数据plt.figure()  # 绘制原始图
sns.boxplot(data=data) # 绘制盒图
plt.title('origin')  # 设置标题plt.figure()  # 绘制原始图
sns.boxplot(data=data) # 绘制盒图
sns.despine(right=True, left=True, top=False, bottom=False)  # 隐藏上边缘和左边缘的刻度线
plt.title('despined')  # 设置标题

第一张为风格为ticks的原图,第二张为隐藏左侧和右侧边框后的图


4. 局部图表风格 axes_style() 

axes_style() 设置局部图表风格和 with 函数配合的用法,在当前 with 域中使用指定的图像的风格,在 with 域外可以使用其他风格。

如下,以 with 域作为分隔,with域内的绘图使用 'darkgrid' 风格,而 with 域外的绘图使用 'whitegrid' 的风格

fig = plt.figure() # 新建画板
x = np.linspace(0, 14, 100) # 设置x轴刻度# 使用with打开一种风格,在with里面执行的都是该风格
with sns.axes_style('darkgrid'):  # 指定风格plt.subplot(2,1,1)  # 绘图位置# 绘制正弦曲线for i in range(5):plt.plot(x, np.sin(x+i*0.5)*(7-i))# 设置标题plt.title('darkgrid')# with域外部绘图就是另外一种风格
sns.axes_style('whitegrid')
plt.subplot(2,1,2)  # 绘图位置
# 绘制正弦曲线
for i in range(5):plt.plot(x, np.sin(x+i*0.5)*(7-i))# 设置标题
plt.title('darkgrid')fig.tight_layout()  #轻量化布局


5. 绘图样式设置 sns.set_context()

如果想要定制 seanborn 的样式,可以参数字典传递给 axes_style() set_style() rc 参数。通过 sns.axes_style() 查看当前绘图的格式参数设置。

sns.axes_style()
# 返回结果
'''
{'axes.facecolor': 'white','axes.edgecolor': '.15','axes.grid': False,'axes.axisbelow': True,'axes.labelcolor': '.15','figure.facecolor': 'white','grid.color': '.8','grid.linestyle': '-','text.color': '.15','xtick.color': '.15','ytick.color': '.15','xtick.direction': 'out','ytick.direction': 'out','lines.solid_capstyle': 'round','patch.edgecolor': 'w','patch.force_edgecolor': True,'image.cmap': 'rocket','font.family': ['sans-serif'],'font.sans-serif': ['Arial','DejaVu Sans','Liberation Sans','Bitstream Vera Sans','sans-serif'],'xtick.bottom': True,'xtick.top': False,'ytick.left': True,'ytick.right': False,'axes.spines.left': True,'axes.spines.bottom': True,'axes.spines.right': True,'axes.spines.top': True}
'''

接下来就可以根据自己的需要来修改这些绘图样式参数。

sns.set_context(context, font_scale=1, rc=None)  

其中,context 代表图像大小,选项有 [ 'paper', 'talk', 'poster', 'notebook' ]font_scale 代表字体大小rc 代表绘图样式参数

plt.figure()  # 创建画板
x = np.linspace(0, 14, 100) # 在0-14之间取出100个点
# 设置布局格式, 字体大小, 线条粗细
sns.set_context('paper')
# 绘制正弦曲线
for i in range(5):plt.plot(x, np.sin(x+i*0.5)*(7-i))# 设置标题
plt.title('original paper style')# 在paper风格基础上编辑
plt.figure()  # 创建画板
# 设置布局格式, 字体大小, 线条粗细
sns.set_context('paper', font_scale=3, rc={'lines.linewidth':3})
# 绘制正弦曲线
for i in range(5):plt.plot(x, np.sin(x+i*0.5)*(7-i))# 设置标题
plt.title('changed paper style')

左图为原图正弦曲线,右图为更改样式后的曲线

 

【seaborn】(1) 数据可视化,绘图风格、布局相关推荐

  1. Py之seaborn:数据可视化seaborn库(三)的矩阵图可视化之jointplot/JointGrid/pairplot/PairGrid/FacetGrid密度图等的函数源代码详解之最强攻略

    Py之seaborn:数据可视化seaborn库(三)的矩阵图可视化之jointplot/JointGrid/pairplot/PairGrid/FacetGrid折线图/柱状图+散点图/矩形密度图的 ...

  2. Py之Seaborn:数据可视化Seaborn库的柱状图、箱线图(置信区间图)、散点图/折线图、核密度图/等高线图、盒形图/小提琴图/LV多框图的组合图/矩阵图实现

    Py之Seaborn:数据可视化Seaborn库的柱状图.箱线图(置信区间图).散点图/折线图.核密度图/等高线图.盒形图/小提琴图/LV多框图的组合图/矩阵图实现 目录

  3. Py之seaborn:数据可视化seaborn库(二)的组合图可视化之密度图/核密度图分布可视化、箱型图/散点图、小提琴图/散点图组合可视化的简介、使用方法之最强攻略(建议收藏)

    Py之seaborn:数据可视化seaborn库(二)的组合图可视化之密度图/核密度图分布可视化.箱型图/散点图.小提琴图/散点图组合可视化的简介.使用方法之最强攻略(建议收藏) 目录 二.组合图可视 ...

  4. Python Matplotlib数据可视化绘图之(六)————图片大小、颜色、标题、纵横坐标、画布和绘图区域背景颜色、Legend(图例)等的参数设置详解

    文章目录 前言 一.图片大小的设定和调节 1. 三种调整matplotlib图片大小的方法 1.1 plt.figure(figsize=(n, n)) 1.1.1 代码如下: 1.1.2 输出结果如 ...

  5. seaborn 教程_使用Seaborn进行数据可视化教程

    seaborn 教程 "Seaborn makes the exploratory data analysis phase of your data science project beau ...

  6. seaborn线性关系数据可视化:时间线图|热图|结构化图表可视化

    一.线性关系数据可视化lmplot( ) 表示对所统计的数据做散点图,并拟合一个一元线性回归关系. lmplot(x, y, data, hue=None, col=None, row=None, p ...

  7. 4 数据可视化大屏 - 布局: BootStrap 之网格Grid

    目录 一.最简单的例子 二.网格grid特性 三.自动布局列 1.列自动等宽度 col 2.设置某一列宽度,其余列自动等宽度 3.可变宽度内容 col-{ breakpoint }-auto 四.响应 ...

  8. seaborn分布数据可视化:直方图|密度图|散点图

    系统自带的数据表格(存放在github上https://github.com/mwaskom/seaborn-data),使用时通过sns.load_dataset('表名称')即可,结果为一个Dat ...

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

    作者:xiaoyu 微信公众号:Python数据科学 知乎:python数据分析师 最近在做几个项目的数据分析,每次用到seaborn进行可视化绘图的时候总是忘记具体操作.虽然seaborn的官方网站 ...

  10. python数据可视化工具 pandas_Pandas数据可视化工具——Seaborn用法整理(下)

    在前一篇文章 Pandas数据可视化工具--Seaborn用法整理(上),我们了解了如何使用这些Seaborn代码绘制分布图和分类图.在本文中,我们将继续讨论Seaborn提供的一些其他以绘制不同类型 ...

最新文章

  1. 中小企业网站建设不妨试试快速建站
  2. python监听文件最后修改人_Python持续监听文件变化代码实例
  3. 『计算机视觉』YOLO系列总结
  4. Transformer: Training and fine-tuning(六)
  5. python 多继承 __new___Python3中的__new__方法以及继承不可变类型类的问题
  6. 栈和队列都是限制存取点的线性结构_栈的练习以及解析
  7. 项目:基于以太网通信,单片机作为客户端,接收CAN-Ethernet的十六进制数据
  8. CSS——Fonts(字体)
  9. PenMount Touch显示鼠标指针驱动安装
  10. Vuex速学篇:(2)利用state保存新闻数据
  11. 厉害了,Apache架构师们遵循的 30 条设计原则
  12. 辞退可以,暴力不行!
  13. 工具模板 | 用APOEM方法消除对用户行为的偏见
  14. java 标点符号_java的标点符号
  15. 【内网安全】WinLinux内存离线读取Hashcat破解RDPSSH存储提取
  16. GitHub上README.md编写教程(基本语法)
  17. BufferedReader读文件
  18. 关于Delphi中Published和Public的区别
  19. 2020-10-01 交换机通过CRT保存配置-SSH
  20. python中如何进行数据类型转换_python数据类型的强制转换

热门文章

  1. error:socket failed: EPERM (Operation not permitted)
  2. Android layer-list 使用
  3. java学习--第50天讲到jquery
  4. 怎么理解ASM中的Failgroup
  5. ---pacman dpkg yum 之比较
  6. Android窗口管理服务WindowManagerService计算窗口Z轴位置的过程分析
  7. 水题/poj 1852 Ants
  8. solr 3.5 配置及服务器设置
  9. 爱不释手(Typingfaster)1.78beta,重大升级,欢迎试用,期待反馈。
  10. usaco前两章小结