>首页> IT >

详细讲解Python之Seaborn(数据可视化)

时间:2022-04-21 18:20:42       来源:转载
本篇文章给大家带来了关于python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

推荐学习:python视频教程

1. 安装 seaborn

安装:

导入:


2.准备数据

正式开始之前我们先用如下代码准备一组数据,方便展示使用。

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snspd.set_option("display.unicode.east_asian_width", True)df1 = pd.DataFrame(    {"数据序号": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],     "厂商编号": ["001", "001", "001", "002", "002", "002", "003", "003", "003", "004", "004", "004"],     "产品类型": ["AAA", "BBB", "CCC", "AAA", "BBB", "CCC", "AAA", "BBB", "CCC", "AAA", "BBB", "CCC"],     "A属性值": [40, 70, 60, 75, 90, 82, 73, 99, 125, 105, 137, 120],     "B属性值": [24, 36, 52, 32, 49, 68, 77, 90, 74, 88, 98, 99],     "C属性值": [30, 36, 55, 46, 68, 77, 72, 89, 99, 90, 115, 101]    })print(df1)

生成一组数据如下:


3.背景与边框


3.1 设置背景风格

设置风格使用的是sns.set_style()方法,且这里内置的风格,是用背景色表示名字的,但是实际内容不限于背景色。

可以选择的背景风格有:

whitegrid  白色网格dark  灰色背景white  白色背景ticks  四周带刻度线的白色背景

其中sns.set()表示使用自定义样式,如果没有传入参数,则默认表示灰色网格背景风格。如果没有set()也没有set_style(),则为白色背景。     一个可能的bug:使用relplot()方法绘制出的图像,"ticks"样式无效。


3.3 其他

seaborn库是基于matplotlib库而封装的,其封装好的风格可以更加方便我们的绘图工作。而matplotlib库常用的语句,在使用seaborn库时也依然有效。    关于设置其他风格相关的属性,如字体,这里有一个细节需要注意的是,这些代码必须写在sns.set_style()的后方才有效。如将字体设置为黑体(避免中文乱码)的代码:  

如果在其后方设置风格,则设置好的字体会设置的风格覆盖,从而产生警告。其他属性也同理。


3.2 边框控制

# 移除顶部和右部边框,只保留左边框和下边框sns.despine()# 使两个坐标轴相隔一段距离(以10长度为例)sns.despine(offet=10,trim=True)# 移除左边框sns.despine(left=True)# 移除指定边框 (以只保留底部边框为例)sns.despine(fig=None, ax=None, top=True, right=True, left=True, bottom=False, offset=None, trim=False)

4. 绘制 散点图

使用seaborn库 绘制散点图,可以使用replot()方法,也可以使用scatter()方法。

replot方法的参数kind默认是’scatter’,表示绘制散点图。 hue参数表示 在该一维度上,用颜色区分

①对A属性值和数据序号绘制散点图,红色散点,灰色网格,保留左、下边框


②对A属性值和数据序号绘制散点图,散点根据产品类型的不同显示不同的颜色, 白色网格,左、下边框:


③将A属性、B属性、C属性三个字段的值用不同的样式绘制在同一张图上(绘制散点图),x轴数据是[0,2,4,6,8…] ticks风格(四个方向的框线都要),字体使用楷体


5. 绘制 折线图

使用seaborn库绘制折线图, 可以使用replot()方法,也可以使用lineplot()方法。

5.1 使用 replot()方法

sns.replot()默认绘制的是散点图,绘制折线图只需吧参数kind改为"line"。① 需求:绘制A属性值与数据序号的折线图, 灰色网格,全局字体为楷体;并调整标题、两轴标签 的字体大小, 以及坐标系与画布边缘的距离(设置该距离是因为字体没有显示完全):


② 需求:绘制不同产品类型的A属性折线(三条线一张图),whitegrid风格,字体楷体。


③  需求:将A属性、B属性、C属性三个字段的值用不同的样式绘制在同一张图上(绘制折线图),x轴数据是[0,2,4,6,8…]   darkgrid风格(四个方向的框线都要),字体使用楷体,并加入x轴标签,y轴标签和标题。边缘距离合适。


③  多重子图

横向多重子图 col

纵向多重子图 row


5.2 使用 lineplot()方法

使用lineplot()方法绘制折线图,其他细节基本同上,示例代码如下:



6. 绘制直方图 displot()

绘制直方图使用的是sns.displot()方法

bins=6 表示 分成六个区间绘图 rug=True 表示在x轴上显示观测的小细条 kde=True表示显示核密度曲线


随机生成300个正态分布数据,并绘制直方图,显示核密度曲线


7. 绘制条形图 barplot()

绘制条形图使用的是barplot()方法   以产品类型 字段数据作为x轴数据,A属性值数据作为y轴数据。按照厂商编号字段的不同进行分类。 具体如下:


8. 绘制线性回归模型

绘制线性回归模型使用的是lmplot()方法。 主要的参数为x, y, data。分别表示x轴数据、y轴数据和数据集数据。   除此之外,同上述所讲,还可以通过hue指定分类的变量; 通过col指定列分类变量,以绘制 横向多重子图; 通过row指定行分类变量,以绘制 纵向多重子图; 通过col_wrap控制每行子图的数量; 通过size可以控制子图的高度; 通过markers可以控制点的形状。   下边对 X属性值 和 Y属性值 做线性回归,代码如下:


9. 绘制 核密度图 kdeplot()

9.1 一般核密度图

绘制和密度图,可以让我们更直观地看出样本数据的分布特征。绘制核密度图使用的方法是kdeplot()方法。   对A属性值和B属性值绘制核密度图, 将shade设置为True可以显示包围的阴影,否则只有线条。


9.2 边际核密度图

绘制边际核密度图时使用的是sns.jointplot()方法。参数kind应为"kde"。使用该方法时,默认使用的是dark样式。且不建议手动添加其他样式,否则可能使图像无法正常显示。


10. 绘制 箱线图 boxplot()

绘制箱线图使用到的是boxplot()方法。 基本的参数有x, y, data。   除此之外 还可以有 hue 表示分类字段 width 可以调节箱体的宽度 notch 表示中间箱体是否显示缺口,默认False不显示。

鉴于前边的数据数据量不太够不便展示,这里再生成一组数据:


生成好后,开始绘制箱线图:


交换x、y轴数据后:

可以看到箱线图的方向也随之改变


将厂商编号作为分类字段:


11. 绘制 提琴图 violinplot()

提琴图结合了箱线图和核密度图的特征,用于展示数据的分布形状。 使用violinplot()方法绘制提琴图。




12. 绘制 热力图 heatmap()

以双色球中奖号码数据为例绘制热力图,这里数据采用随机数生成。

推荐学习:python视频教程

以上就是详细讲解Python之Seaborn(数据可视化)的详细内容,更多请关注php中文网其它相关文章!

关键词: 使用的是 可以使用 白色背景