06 第六章 绘图和可视化之Seaborn:直方图、密度图、热力图、柱状图,图形显示效果之主题、context,调色功能



一、Seaborn介绍

1.1 定位:Matplotlib的众多的扩展之一

Seaborn:本质是Matplotlib的众多的扩展之一。

1.2 优势:Seaborn与Matplotlib对比:绘制鸢尾花的花瓣和花萼的长度的散点图

鸢尾花:花瓣(petal)、花萼(sepal)

需求:画一个花瓣和花萼的长度的散点图,并且点的颜色要区分鸢尾花的种类。

1.

从本地电脑中,读取数据,生成一个DataFrame:

2.

查看下鸢尾花的名字,有以下三种:

3.使用Matplotlib来绘图

  • 用字典,把花名与颜色一一对应起来:
  • 我的疑问:为什么这里是个zip?

g是一个groupby对象,它本质是一个字典:

scatter:是散点图

4.用seaborn来绘图:一句话搞定。

hue:按照种类来分配颜色

1.3 python的可视化工具总览

每个颜色:理解为一个cluster

二、Seaborn实现直方图、密度图

2.1 直方图:传统方法绘制,matplotlib

1.通过matplotlib来绘制直方图:

2.

通过pandas库的series数据结构,自带的绘图方法:绘制密度图:

2.2 直方图:用seaborn扩展包来绘图

1.各参数:

2.

同时包含直方图(hist)、密度图(kde):

3.rug参数:

4.

2.3 密度图:用kdeplot函数绘制

1.

各参数

2.

3.弃

因为Seaborn包本质是Matplotlib的一个扩展:
所以,Seaborn可以通过函数,来直接调用Matplotlib的本身具备的一些api:

出错:似乎是版本更迭的原因

三、Seaborn实现热力图、柱状图

3.1 数据准备

1.

适合学习、做实验:Seaborn提供了很多内置的数据集,通过线上直接读取。

  • 为什么我线上读取不出来: https://github.com/mwaskom/seaborn-data

2.

好吧,还是下载csv文件到电脑本地:用Pandas直接本地读取吧

读取为一个DataFrame:

3.

上述的DataFrame看着不是很方便,因为有的数据是隐藏了,且结构不合理。

所以,调整如下:刚好三列各有各的位置:

4.

上述存在的问题是:

month月份是按照字母的a-z顺序排序的。可是,应该从January为起始点,怎么办呢?

  • 先将英文月份转换为日期对象,并新增一列:------- 我的疑问:这里的%B什么意思?
  • 对该新增列进行排序;

  • drop丢弃掉这一个新增列

3.2 热力图:sns.heatmap(),数据的分布是否密集

1.

各参数:

2.

2.

显示下各个点的具体数据值:

3.3. 柱状图:sns.barplot()

1.数据准备

  • 每年,一共有多少个
  • 默认,sum是一列的总和。

2.

3.

对比,以前的Matplotlib绘制柱状图:

Seaborn绘制的图,确实更精致好看。

四、Seaborn设置图形的显示效果:主题、context

4.1 使用传统的matplotlib绘制

1.用matplotlib绘制一个曲线图:

  • 用Numpy库生成一个数组array,元素是等差数列:从0到14,切成100等分--------- 用来做x横轴坐标
  • 同理,用Numpy库,生成两条曲线的y轴

2.

为了后续重复使用上述指令,封装成一个函数:

4.2 Seaborn绘图:5种内置主题

1.

默认的主题

2

Seaborn提供的5种主题:

  • 黑底:

  • 黑底,有网格:

  • 白底

  • 白底、有网格

4.3 自定义的微调上述主题的参数

虽然提供了5种内置主题,但是也是可以微调的。

1.

查看当前主题下的各个参数的值:

2.

3.

清空对于风格的自定义设置:

变成了默认的主题:

4.4 Seaborn绘图:4种内置context

1.

  • 内置的四种context
  • 发现:越来越大

4.5 自定义的微调上述context的参数

1.plotting_context()

查看当前context的参数包:

2.set_context()

微调:

五、Seaborn强大的调色功能

5.1 Matplotlib绘制

一个画布中有四条曲线:

5.2. 出错节(可跳过):本质:没有跟老师一模一样:)

出错:

解决:

是百分号%,要在s的前面!~

(40min没找出问题所在。。。)

出错2:

解决:

5.3 补:python中的%s%是什么意思

1.

2.

https://zoejoyuliao.medium.com/%E6%AF%94%E8%BC%83-python-%E7%9A%84%E6%A0%BC%E5%BC%8F%E5%8C%96%E5%AD%97%E4%B8%B2-formatting-str-format-f-string-6d28487ba1d2

5.3 Seaborn绘图:sns.color_palette()调色板

1.

  1. 查看当前的色板:

3.

更改当前的色板,为新的一套色板:

4.

使用这一套新的色板,来绘图:

5.

恢复到原先的默认状态;

5.4 临时的更改系统的色板:with语句内

1.

with语句内:临时的色板

with语句外:系统默认的色板

有点像,局部区域。比如,变量的作用域。

2.

色板里,有十种颜色,够用了。没必要自己去设置和增加其他的色块。

如果真的绘图需要更多的颜色呢?

六、帮助文档

查看帮助文档:https://seaborn.pydata.org/tutorial.html

声明:Jerry's Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 06 第六章 绘图和可视化之Seaborn:直方图、密度图、热力图、柱状图,图形显示效果之主题、context,调色功能


Follow excellence, and success will chase you.