Python下多变量联合分布图(pairplot)绘制——seaborn

简介: Python下多变量联合分布图(pairplot)绘制——seaborn

  联合分布(Joint Distribution)图是一种查看两个或两个以上变量之间两两相互关系的可视化形式,在数据分析中经常需要用到。一幅好看的联合分布图可以使得我们的数据分析更加具有可视性,让大家眼前一亮。

  那么,本文就将用seaborn来实现联合分布图的绘制。seaborn是一个基于matplotlib的Python数据可视化模块,借助于其,我们可以通过较为简单的操作,绘制出各类动人的图片。

  首先,引入需要的模块。

import pandas as pd
import seaborn as sns

  接下来,将存储有我们需要绘制联合分布图数据的文件导入。因为我是将数据存储于.csv文件,所以我这里用pd.read_csv来实现数据的导入。我的数据在.csv文件中长如下图的样子,其中共有107行,包括106行样本加1行列标题;以及10列。我们就看前几行即可:

  导入数据的代码如下:

data_path="G:/black_carbon_paper/97_BC20201230/00_Original/AllData5Factor.csv"
column_names=['FID','ID','X','Y','BC','Temp','Slope','RoDen','POI','GAIA']
my_data=pd.read_csv(data_path,names=column_names,header=0)

  其中,data_path.csv文件存储位置与文件名,column_names是导入的数据在Python中我希望其显示的名字(为什么原始数据本来就有列标题但还要再设置这个column_names,本文下方有介绍);header=0表示.csv文件中的0行(也就是我们一般而言的第一行)是列标题;如果大家的初始数据没有列标题,即其中的第一行就是数据自身,那么就需要设置header=None

  执行上述代码,我们将导入的数据打印,看看在Python中其长什么样子。

print(my_data)

  可以看到,导入Python后数据的第七列,原本叫做“Slope_1”,但是设置我们自己命名的column_names后,其就将原本数据的列标题改为我们自己设定的标题“Slope”了。如果我们不设置column_names,导入的数据就是这个样子:

  可以看到,我们不用column_names的话,数据导入Python后列名就是原始的“Slope_1”。

  我们继续。其实用seaborn绘制联合分布图非常简单(这就是seabornmatplotlib改进,让我们绘制复杂的图时候不需要太麻烦),仅仅只有一下两句代码:

joint_columns=['BC','Temp','Slope','RoDen','POI','GAIA']
sns.pairplot(my_data[joint_columns],kind='reg',diag_kind='kde')

  其中,第一句是定义我们想要参与绘制联合分布图的列,将需要绘图的列标题放入joint_column。可以看到,因为我的数据中,具有“ID”这种编号列,而肯定编号是不需要参与绘图的,那么我们就不将其放入joint_column即可。

  第二句就是绘图啦~kind表示联合分布图中非对角线图的类型,可选'reg''scatter''kde''hist''reg'代表在图片中加入一条拟合直线,'scatter'就是不加入这条直线,'kde'是等高线的形式,'hist'就是类似于栅格地图的形式;diag_kind表示联合分布图中对角线图的类型,可选'hist''kde''hist'代表直方图,'kde'代表直方图曲线化。

  以kinddiag_kind分别选择'reg''kde'为例,绘图结果如下:

  以kinddiag_kind分别选择'scatter''hist'为例,绘图结果如下:

  个人感觉第一幅图好看些~

  不过,由于参与绘图的变量个数比较多,因此使得图中的字体有点看不清。可以加上一句代码在sns.pairplot这句代码的上面:

sns.set(font_scale=1.2)

  其中,font_scale就是字体的大小,后面的数字越大,字体就越大。以font_scale=1.2为例,让我们看看效果:

  这样子字体就大了~

相关文章
|
11天前
|
移动开发 数据可视化 数据挖掘
利用Python实现数据可视化:以Matplotlib和Seaborn为例
【10月更文挑战第37天】本文旨在引导读者理解并掌握使用Python进行数据可视化的基本方法。通过深入浅出的介绍,我们将探索如何使用两个流行的库——Matplotlib和Seaborn,来创建引人入胜的图表。文章将通过具体示例展示如何从简单的图表开始,逐步过渡到更复杂的可视化技术,帮助初学者构建起强大的数据呈现能力。
|
23天前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
31 4
|
1月前
|
Python
【10月更文挑战第5天】「Mac上学Python 8」基础篇2 - 变量深入详解
本篇将详细介绍Python中变量的使用方式和进阶操作,涵盖变量的输入与输出、变量的多重赋值、变量的内存地址管理以及变量的传递和交换等操作。通过本篇的学习,用户将对变量的使用有更深入的理解,并能灵活运用变量进行各种编程操作。
51 1
【10月更文挑战第5天】「Mac上学Python 8」基础篇2 - 变量深入详解
|
1月前
|
数据可视化 数据挖掘 Python
Seaborn 库创建吸引人的统计图表
【10月更文挑战第11天】本文介绍了如何使用 Seaborn 库创建多种统计图表,包括散点图、箱线图、直方图、线性回归图、热力图等。通过具体示例和代码,展示了 Seaborn 在数据可视化中的强大功能和灵活性,帮助读者更好地理解和应用这一工具。
41 3
|
1月前
|
存储 编译器 Python
Python--变量、输出与输入
【10月更文挑战第5天】
|
1月前
|
测试技术 Python
Python MagicMock: Mock 变量的强大工具
Python MagicMock: Mock 变量的强大工具
|
1月前
|
存储 Java 编译器
Python学习三:学习python的 变量命名规则,算数、比较、逻辑、赋值运算符,输入与输出。
这篇文章是关于Python编程语言中变量命名规则、基本数据类型、算数运算符、比较运算符、逻辑运算符、赋值运算符以及格式化输出与输入的详细教程。
20 0
Python学习三:学习python的 变量命名规则,算数、比较、逻辑、赋值运算符,输入与输出。
|
1月前
|
存储 C语言 Python
解密 Python 的变量和对象,它们之间有什么区别和联系呢?
解密 Python 的变量和对象,它们之间有什么区别和联系呢?
22 2
|
2月前
|
测试技术 Python
Python MagicMock: Mock 变量的强大工具
Python MagicMock: Mock 变量的强大工具
|
2月前
|
存储 C语言 Python
通过 Cython 带你认清 Python 变量的本质
通过 Cython 带你认清 Python 变量的本质
51 8