1、Seaborn

在上节中我们学习了matplotlib,这节课我们来看看另一个可视化的模块seaborn,它是基于matplotlib的更高级的开源库,主要用作于数据可视化,解决了matplotlib的两大问题。正如Michael Waskom所说的:Matplotlib试着让简单的事情更加简单,困难的事情变得可能,那么Seaborn就是让困难的东西更加简单。

使用matplotlib最大的问题就是它默认的各种参数,在serborn当中则完全避免了这些问题

  1. # 导入模块
  2. import matplotlib.pyplot as plt
  3. import pandas as pd
  4. # 初始化 Figure 和 Axes 对象
  5. fig, ax = plt.subplots()
  6. # 加载数据
  7. tips = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv")
  8. # 创建 violinplot
  9. ax.violinplot(tips["total_bill"], vert=False)

  1. # 导入模块
  2. import matplotlib.pyplot as plt
  3. import pandas as pd
  4. import seaborn as sns
  5. # 加载数据
  6. tips = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv")
  7. # 创建 violinplot
  8. sns.violinplot(x = "total_bill", data=tips)
  9. # 展示图像
  10. plt.show()

使用matplotlib,通常都需要我们自己来增加颜色、刻度标签等一些样式。seaborn就是matplotlib的延伸,如果会用matplotlib,那么使用seaborn也没问题

2、加载数据

使用seaborn不仅可以将自己本地的数据绘制成图表,还可以使用库本身提供的内置数据集

2.1、加载内置数据集

可以通过load_dataset()来使用内置的seaborn数据集,需要查看所有内置数据集可以点击https://github.com/mwaskom/seaborn-data

  1. # 导入模块
  2. import seaborn as sns
  3. import matplotlib.pyplot as plt
  4. # 加载鸢尾花数据
  5. iris = sns.load_dataset("iris")
  6. # 构建 iris plot
  7. sns.swarmplot(x="species", y="petal_length", data=iris)
  8. # 展示 图像
  9. plt.show()

2.2、加载本地数据集

  1. 数据可视化大部分的应用场景都是使用自己的数据集,seaborn主要适用于我们平时常用的DataFrame数组。它是一种类似于二维数组的数据结构。
  2. SeabornDataFrame非常友好的原因是,因为DataFrame的标签会自动导入到图表当中。在第一个Seaborn示例中绘制的一个小提琴图像,x轴会自动添加一个标签`total_bill`,这个在matplotlib中就需要我们自己手动添加了。
  1. # 导入模块
  2. import matplotlib.pyplot as plt
  3. import seaborn as sns
  4. import tushare as ts
  5. data = ts.get_k_data('000001')
  6. data = data.tail()
  7. # 建立一个 factorplot
  8. g = sns.factorplot('high','low',data=data, kind="bar",palette="muted", legend=False)
  9. # 展示图像
  10. plt.show()

3、配置

3.1、在seaborn中使用matplotlib的默认值

  1. # Import Matplotlib
  2. import matplotlib.pyplot as plt
  3. # 查看所有可用的样式
  4. plt.style.available
  5. # 使用matplotlib的默认值
  6. plt.style.use("classic")
  1. ['bmh',
  2. 'classic',
  3. 'dark_background',
  4. 'fast',
  5. 'fivethirtyeight',
  6. 'ggplot',
  7. 'grayscale',
  8. 'seaborn-bright',
  9. 'seaborn-colorblind',
  10. 'seaborn-dark-palette',
  11. 'seaborn-dark',
  12. 'seaborn-darkgrid',
  13. 'seaborn-deep',
  14. 'seaborn-muted',
  15. 'seaborn-notebook',
  16. 'seaborn-paper',
  17. 'seaborn-pastel',
  18. 'seaborn-poster',
  19. 'seaborn-talk',
  20. 'seaborn-ticks',
  21. 'seaborn-white',
  22. 'seaborn-whitegrid',
  23. 'seaborn',
  24. 'Solarize_Light2',
  25. 'tableau-colorblind10',
  26. '_classic_test']

3.2、在matplotlib中使用seaborn的颜色作为色彩

可以使用color_palette()来定义要使用的颜色映射和参数n_colors的颜色数

  1. # 导入相关模块
  2. import seaborn as sns
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. from matplotlib.colors import ListedColormap
  6. # 定义一个变量N
  7. N = 500
  8. # 构建 colormap
  9. current_palette = sns.color_palette("muted", n_colors=5)
  10. cmap = ListedColormap(sns.color_palette(current_palette).as_hex())
  11. # 初始化数据
  12. data1 = np.random.randn(N)
  13. data2 = np.random.randn(N)
  14. # 产生随机数标签
  15. colors = np.random.randint(0,5,N)
  16. # 创建散点图图表
  17. plt.scatter(data1, data2, c=colors, cmap=cmap)
  18. # 添加颜色条
  19. plt.colorbar()
  20. # 展示图像
  21. # plt.show()
  1. <matplotlib.colorbar.Colorbar at 0x23f39041828>

3.3、在seaborn中旋转标签文本

  1. # Import the necessary libraries
  2. import matplotlib.pyplot as plt
  3. import seaborn as sns
  4. import numpy as np
  5. import pandas as pd
  6. # 初始化数据
  7. x = 10 ** np.arange(1, 10)
  8. y = x * 2
  9. data = pd.DataFrame(data={'x': x, 'y': y})
  10. # 创建 lmplot
  11. grid = sns.lmplot('x', 'y', data, size=7, truncate=True, scatter_kws={"s": 100})
  12. # 在X轴上旋转标签
  13. grid.set_xticklabels(rotation=90)
  14. # 展示图像
  15. # plt.show()
  1. <seaborn.axisgrid.FacetGrid at 0x23f39090b38>

05-01 seaborn的更多相关文章

  1. Python小白的数学建模课-05.0-1规划

    0-1 规划不仅是数模竞赛中的常见题型,也具有重要的现实意义. 双十一促销中网购平台要求二选一,就是互斥的决策问题,可以用 0-1规划建模. 小白学习 0-1 规划,首先要学会识别 0-1规划,学习将 ...

  2. Cheatsheet: 2016 05.01 ~ 05.31

    Other Awesome Go - A curated list of awesome Go frameworks, libraries and software Visual Studio Cod ...

  3. Cheatsheet: 2015 05.01 ~ 05.31

    .NET .NET on Mac for the OS X n00b without Mono via Visual Studio Code Microsoft frameworks deprecat ...

  4. Cheatsheet: 2014 05.01 ~ 05.31

    Web Choosing a Web Framework/Language Combo for the Next Decade Optimizing NGINX and PHP-fpm for hig ...

  5. EZ 2018 05 01 NOIP2018 模拟赛(十一)

    莫名其妙暴涨Rating 其实题目都挺好挺简单的,但是越简单就越容易ZZ 不理解问什么第一题这么多人找环 不过T2是真心细节题,T3太难了 题目戳这里 T1 仔细分析题意发现那个交换规则就是废话,如果 ...

  6. Cheatsheet: 2018 05.01 ~ 07.31

    JAVA Java Tips: Creating a Monitoring-Friendly ExecutorService Other Modeling the Card Game War in C ...

  7. Cheatsheet: 2017 05.01 ~05.31

    Web Configuring Your .npmrc for an Optimal Node.js Environment Web Developer Security Checklist HTTP ...

  8. 「JavaSE 重新出发」05.01.02 hashCode 方法、toString 方法

    hashCode 方法 散列码(hash code)是由对象导出的一个整形值(可以是负数).其是没有规律的,如果x与y是两个不同的对象,则x.hashCode()与y.hashCode()基本上不会相 ...

  9. 「JavaSE 重新出发」05.01.01 equals 方法

    equals 方法示例 // 代码来自<Java核心技术 卷I>P167 // 父类 public class Employee{ ... public boolean equals(Ob ...

  10. 「JavaSE 重新出发」05.01 继承

    继承 一个对象变量可以指示多种实际类型的现象被称为多态(polymorphism). 在运行时能够自动地选择调用哪个方法的现象称为动态绑定(dynamic binding). 如果是private方法 ...

随机推荐

  1. 修改SQL Server中的计算机名

    安装SQL Server之后,如果修改计算机名会导致登录异常,或者某些功能不能用,例如配置Replication时会提示如下错误: SQL Server replication requires th ...

  2. vue 仿微信朋友圈9张图上传功能

    项目需求要求用户上传商品的时候可以一次性上传9张图,多余9张提示‘只能上传9张图’,并且每张图右上角有个删除按钮,图片也可以点击放大. 出来的效果图如下: 话不多说,上代码: <el-form- ...

  3. 邮件hMailServer +Foxmail 安装使用教程

    hMialServer是Windows下一款免费开源的邮件服务器软件,支持smtp.pop3.imap. 本文主要根据官方文档Quick-Start guide整理而成. 一.下载 下载地址:http ...

  4. 现代C++实现多种print

    目录 Print Version1 Print Version2 Print Version3 Print Version4 容器的Print tuple容器的print 结语 学习C++的朋友会遇到 ...

  5. CAT 监控搭建

    简介 CAT 是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务. 已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统 ...

  6. new一个对象的初始化过程

    ############################### 今天总结一下,new对象的初始化过程. ############################### 首先,当不含static成员时, ...

  7. Metasploit漏洞扫描

    Metasploit漏洞扫描 漏洞扫描是自动在目标中寻找和发现安全弱点. 漏洞扫描器会在网络上和对方产生大量的流量,会暴露自己的行为过程,如此就不建议你使用漏扫了. 基本的漏洞扫描 我们首先使用net ...

  8. 导入部署 hand

    差价导入部署步骤如下: 执行视图,包. 定义消息,验证的时候使用(XXC1003DFM_BI_001 到 XXC1003DFM_BI_007,含中英文). 通用导入设置: 电子表元数据管理,含导入正确 ...

  9. tcp粘包、解决粘包问题

    目录 subproess模块 TCP粘包问题 粘包两种情况 解决粘包问题 struct模块的使用 使用struct模块解决粘包 优化解决粘包问题 上传大文件 服务端 客户端 UDP协议 upd套接字 ...

  10. Ubuntu 18.04安装Conda、Jupyter Notebook、Anaconda

    1.Conda是一个开源的软件包管理系统和环境管理系统,它可以作为单独的纯净工具安装在系统环境中,有的python库无法用conda获得时,conda允许在conda环境中利用Pip获取包文件.可以将 ...