博客地址:http://www.cnblogs.com/yudanqu/

  Seaborn是对matplotlib的extend,是一个数据可视化库,提供更高级的API封装,在应用中更加的方便灵活。下面我简单介绍一下他的用法,实际应用的时候,可以直接从文档中查找这个库,这时候使用就很快捷了。

  1. 提要:1、直方图和密度图
  2.  
  3.    2、柱状图和热力图
  4.  
  5.    3、设置图形显示效果
  6.  
  7.    4、调色功能

  老样子,首先将使用它所需要的库导入进来,当然,其中包括numpy之类的是为了演示它的功能才导入的,大家要先理解一下每个库的作用。

  1. import numpy as np
  2. import pandas as pd
  3. import matplotlib.pyplot as plt
  4. from pandas import Series,DataFrame
  5. import seaborn as sns

1、直方图和密度图

  如果在交互式环境中,可以通过%matplotlab来解决每次通过plt.show()来显示图像(本人在ipython中,貌似jupyter中%matplotlib inline等等)

# matplotlib

  1. s1 = Series(np.random.randn(1000)) # 生成1000个点的符合正态分布的随机数
  2. plt.hist(s1) # 直方图,也可以通过plot(),修改里面kind参数实现
  3. s1.plot(kind='kde') # 密度图

# seaborn

  1. sns.distplot(s1,hist=True,kde=True,rug=True) # 前两个默认就是True,rug是在最下方显示出频率情况,默认为False
  2. # bins=20 表示等分为20份的效果,同样有label等等参数
  3. sns.kdeplot(s1,shade=True,color='r') # shade表示线下颜色为阴影,color表示颜色是红色
  4. sns.rugplot(s1) # 在下方画出频率情况

  给出两种方式通过最基本的方式画出来的效果,怎么样,是不是发现seaborn很强大。

2、柱状图和热力图

  (1)下载实验数据:

  1. df = sns.load_dataset('flights') # 在线下载一个数据用于实验,在sns.load_dataset()函数里有很多的数据,想了解更多的可以到GitHub中找到源码,你就会很清楚了

  我们可以先看一下里面的数据,可以看到,这是一个航空的数据,里面有年、月和乘客数量,接下来我们就要在这份数据上进行分析。

  (2)我们可以通过透视表来先对这份数据进行一下处理:

  1. df = df.pivot(index='month',columns='year',values='passengers') # 生成一个透视表,得到一个以年、月为轴的二维数据表

  大家可以自己试一下,这样生成的结果是以年为columns,以月为index,表内数据为对应的乘客数量。

  (3)绘制柱状图

  1. s = df.sum()
  2. # 通过matplotlib绘出图形
  3. s.plot(kind='bar')
  4. # 通过seaborn绘出图形
  5. sns.barplot(x=s.index,y=s.values)

  

  (4)绘制热力图

  1. df.plot() # 线性的显示数据情况
  2. 2 sns.heatmap(df) # 生成热力图
  3. 3 # sns.heatmap(df,annot=True,fmt='d') # annot参数是指显示数据,fmt='d'是指以整数形式显示

3、设置图形显示效果

(1)axes_style and set_style

  1. x = np.linspace(0,14,100)
  2. y1 = np.sin(x)
  3. y2 = np.sin(x+2)*1.25
  4. def sinplot():
  5. plt.plot(x,y1)
  6. plt.plot(x,y2)
  7.  
  8. sinplot() # 以matplotlib显示,生成两个函数图像

  1. # seaborn的5种装饰风格
  2. styles = ['darkgrid','dark','white','whitegrid','tricks'] # 颜色代表背景颜色,grid代表是否有网格
  3. sns.set_style(style[0]) # 进行装饰,括号内可以直接写装饰风格
  4. sinplot() # 经过修饰之后的图像
  5.  
  6. sns.axes_style() # 显示当前主题的内容,这些数据都可以修改微调
  7. # 更改的时候就将其信息的以字典形式复制到set_style()里,当做参数来修改(注意是以字典的形式)
  8. sns.set() # 设置风格为空,即清空自己定义的,恢复到默认的时候

(2)plotting_context() and set_context()

  1. context = ['paper','notebook','talk','poster'] # seaborn本身定义好的
  2. sns.set_context('paper',rc={'grid.linewidth':3.0}) # rc参数
  3. sinplot()
  4.  
  5. sns.plotting_context() # 显示出当前状态的数据
  6. sns.set() # 恢复到默认

  图像貌似一样,但并不是没有成功,只是变化比较细微,真正用到的时候就可以体会到了。

4、调色功能

  1. # 先绘制一个图像
  2. def sinplot1():
  3. x = np.linspace(0,14,100)
  4. plt.figure(figsize=(8,6)) # 图像比较小时,通过这个函数更改大小
  5. for i in range(4):
  6.   plt.plot(x,np.sin(x+i)*(i+0.75),label='sin(x+%s)*(%s+0.75)' % (i,i))
  7. plt.legend()
  8. sinplot1()

  1. # 引入seaborn
  2. sns.color_palette() # 使用调色板
  3. # 不传入参数返回当前使用的调色板(RGB)
  4. sns.palplot(sns.color_palette()) # 画出调色板,参数为上面的调色板
  • 接下来,我们就要调整我们的调色板了
  1. pal.style = ['deep','nuted','pastel','bright','dark','colorblind'] # seaborn默认定义的调色板
  2.  
  3. # 第一种设置画板方式
  4. sns.set_palette(sns.color_palette('dark')) # 设置色板
  5. sns.set() # 恢复默认风格
  6.  
  7. # 第二种设置画板方式,并且最后恢复到默认
  8. with sns.color_palette():
  9. sinplot1() # 在内部调整画板输出图形,当with结束时,则恢复默认
  • 调色板里的颜色是定义好的,那么如果我们将要绘制的图形包括很多的函数,需要更多的颜色,该怎么办呢。
  1. # 默认提供的色板数量是固定的,如果图像是更多的函数,那么颜色将循环色板中的风格。如果想不使他颜色有相同,可以通过sns.color_palette()来修改
  2. sns.color_palette([(0.5,0.2,0.6),(0.3,0.3,0.4)]) # 因为色板是以列表的形式存储的,里面的每种风格以元组的形式存在所以需要用[()]
  3.  
  4. # 第二种增加色板颜色的方法
  5. sns.color_palette('hls',8) # hls方法,后面写参数8,即生成有8种不同颜色的色板

  作者:渔单渠(yudanqu)

  博客地址:http://www.cnblogs.com/yudanqu/

Python--Seaborn绘图和可视化--基本语法的更多相关文章

  1. Python之绘图和可视化

    Python之绘图和可视化 1. 启用matplotlib 最常用的Pylab模式的IPython(IPython --pylab) 2. matplotlib的图像都位于Figure对象中. 可以使 ...

  2. Python Seaborn综合指南,成为数据可视化专家

    概述 Seaborn是Python流行的数据可视化库 Seaborn结合了美学和技术,这是数据科学项目中的两个关键要素 了解其Seaborn作原理以及使用它生成的不同的图表 介绍 一个精心设计的可视化 ...

  3. Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识

    第1节 pandas 回顾 第2节 读写文本格式的数据 第3节 使用 HTML 和 Web API 第4节 使用数据库 第5节 合并数据集 第6节 重塑和轴向旋转 第7节 数据转换 第8节 字符串操作 ...

  4. python金融与量化分析------Matplotlib(绘图和可视化)

    -----------------------------------------------------------Matplotlib:绘图和可视化------------------------ ...

  5. python常用绘图软件包记录

    在没有使用python之前,觉得matlab的绘图功能还算可以~但现在发现python的绘图包真的好强大,绘制出的图像非常专业漂亮,但具体使用还有待学习,这里记录学习过程中遇到的python绘图包,以 ...

  6. Matplotlib:绘图和可视化

    Matplotlib:绘图和可视化 简介 简单绘制线形图 plot函数 支持图类型 保存图表 一 .简介 Matplotlib是一个强大的Python绘图和数据可视化的工具包.数据可视化也是我们数据分 ...

  7. python 爬虫与数据可视化--python基础知识

    摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...

  8. python seaborn 画图

    python seaborn 画图 59888745@qq.com 2017.08.02 distplot( )  kdeplot( ) distplot( )为hist加强版, kdeplot( ) ...

  9. web前端学习python之第一章_基础语法(二)

    web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

随机推荐

  1. NSString的几种常用方法—韩俊强博…

    要把 "2011-11-29" 改写成 "2011/11/29"一开始想用ios的时间格式,后来用NSString的方法搞定. 1.创建NSString字符串 ...

  2. 【一天一道LeetCode】#49. Group Anagrams

    一天一道LeetCode系列 (一)题目 Given an array of strings, group anagrams together. For example, given: [" ...

  3. Leetcode_110_Balanced Binary Tree

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42218839 Given a binary tree, d ...

  4. 反对抄袭 正解spring的@Autowired 不要相信网上的错误版本

    首先,最重要的, @Autowired的就是用来来消除 set ,get方法. 有些介绍,如著名的马士兵,说要在set方法上进行注入.我当时就看不明白了,既然只取消了一个GET,这个@Autowire ...

  5. Android4.0Sd卡移植之使用vold自动挂载sd卡

    在cap631平台上移植android4.0,发现内核驱动没有任何问题,能够读写,当总不能挂载. 后来发现是因为自动挂载需要vold的支持.vold程序负责检查内核的 sysfs 文件系统,发现有SD ...

  6. 单向循环链表C语言实现

    我们都知道,单向链表最后指向为NULL,也就是为空,那单向循环链表就是不指向为NULL了,指向头节点,所以下面这个程序运行结果就是,你将会看到遍历链表的时候就是一个死循环,因为它不指向为NULL,也是 ...

  7. PHP 与搜索蜘蛛

    本文移到:http://www.phpgay.com/Article/detail/classid/2/id/63.html

  8. 如何搭建modem编译环境

    [DESCRIPTION] (1)MT6577以及之前的chip平台(如MT6575,73等) 的modem编译环境和MTK的Feature Phone的编译环境一样,即Windows+RVCT (2 ...

  9. Android Hal 分析

    本文是基于android4.0.3.对应其他低版本的代码,可能有所差异,但基本大同小异. Android的HAL是为了保护一些硬件提供商的知识产权而提出的,是为了避开linux的GPL束缚.思路是把控 ...

  10. Mac OS X下64位汇编与Linux下64位汇编的一些不同

    1 首先系统调用号大大的不同:mac64和linux32的系统调用号也不同(虽然局部可能有相同) 2 mac64的系统调用号在: /usr/include/sys/syscall.h 可以查到,但是调 ...