1、Seaborn

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

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

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

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

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

2、加载数据

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

2.1、加载内置数据集

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

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

2.2、加载本地数据集

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

3、配置

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

# Import Matplotlib
import matplotlib.pyplot as plt # 查看所有可用的样式
plt.style.available # 使用matplotlib的默认值
plt.style.use("classic")
['bmh',
'classic',
'dark_background',
'fast',
'fivethirtyeight',
'ggplot',
'grayscale',
'seaborn-bright',
'seaborn-colorblind',
'seaborn-dark-palette',
'seaborn-dark',
'seaborn-darkgrid',
'seaborn-deep',
'seaborn-muted',
'seaborn-notebook',
'seaborn-paper',
'seaborn-pastel',
'seaborn-poster',
'seaborn-talk',
'seaborn-ticks',
'seaborn-white',
'seaborn-whitegrid',
'seaborn',
'Solarize_Light2',
'tableau-colorblind10',
'_classic_test']

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

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

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

3.3、在seaborn中旋转标签文本

# Import the necessary libraries
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd # 初始化数据
x = 10 ** np.arange(1, 10)
y = x * 2
data = pd.DataFrame(data={'x': x, 'y': y}) # 创建 lmplot
grid = sns.lmplot('x', 'y', data, size=7, truncate=True, scatter_kws={"s": 100}) # 在X轴上旋转标签
grid.set_xticklabels(rotation=90) # 展示图像
# plt.show()
<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. activiti5初识

    因工作需要,接手新的项目,其中用到了activiti实现的工作流,特意去大致学习下,特此记录下. 1.acticiti5框架说明及表结构介绍 Activiti5工作流引擎框架: 它实际上是一个java ...

  2. 【vim编辑器】文本编辑器vim

    在Linux系统中一切皆文件.配置一个服务就是在修改其配置文件的参数 一.Vim编辑器 vim是我们在Linux系统中常用的文件编辑命令,也可以使用其简写vi.其边际模式有三种:命令模式,输入模式,行 ...

  3. HTML+css基础 标签

    图片标签:<img src="./imgs/1.jpg" alt=“一种对图片解释说明的” /> HTML   超文本标记语言   英文名称: hyper  text  ...

  4. 【总结】《氨基酸新晋管理者领导力培训》第一次课_Day2_学习心得

    7月26日第二天学习心得: 今天主要学习了执行贯彻和绩效反馈两大块内容,我的心得有: 一.执行层面有两大原则:--理解员工需求: 回顾了一下自己以往的经历,一般这块我用的最多的一般是在接到一个新项目的 ...

  5. DbgUiConnectToDbg(ntdll.dll)函数逆向

    暂时未解决问题: 1.  [fs+0F24h]中存储着什么东西. 答案:其存放着被调试程序的DbgObject句柄._NtCreateDebugObject(ntoskrnl.exe)函数逆向分析 该 ...

  6. File 创建一个空目录,创建一个多级目录,删除一个目录

    package seday03; import java.io.File; /** * 创建一个空目录,* @author xingsir*/public class MkDirDemo { publ ...

  7. Android studio down 的项目中文出现 乱码

    发现down的项目file->open找到文件夹打开,里面少很多东西,像build.grade(好像拼错了). 这个问题是要file->import progect找到文件夹打开,as会自 ...

  8. 盲法介绍及python盲打练习系统

    目录 一:盲打简介与优点 二:如何练习 三:键盘字母排列顺序的口诀 四:python打字练习系统 一:盲打简介与优点   简介:盲打是指打字的时候不用看键盘或看稿打字时的视线不用来回于文稿和键盘之间的 ...

  9. Maven设置本地仓和阿里云远程仓

    在maven项目导入jar包坐标时需要连接maven官方仓库下载,但是下载速度感人,所以来修改一下设置. 设置成为本地仓和连接阿里云的远程仓库. (本地仓如果没有这个jar) 找出相应配置文件:例如我 ...

  10. Vue中computed和watch的区别

    在vue中computed和watch的真正区别是:computed产生于它的依赖,而watch产生于它的依赖的变化.只要依赖存在,我们就能访问到其对应的computed属性:但只有依赖发生了改变,我 ...