gpt4 book ai didi

多变量两两相互关系联合分布图的Python绘制

转载 作者:我是一只小鸟 更新时间:2023-02-13 14:31:13 25 4
gpt4 key购买 nike

  本文介绍基于 Python 中 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 后数据的第 7 列,原本叫做 Slope_1 ,但是设置我们自己命名的 column_names 后,其就将原本数据的列标题改为我们自己设定的标题 Slope 了。如果我们不设置 column_names ,导入的数据就是这个样子:

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

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

                        
                          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' 代表直方图曲线化.

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

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

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

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

                        
                          sns.set(font_scale=1.2)

                        
                      

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

  这样子字体就大了~ 。

最后此篇关于多变量两两相互关系联合分布图的Python绘制的文章就讲到这里了,如果你想了解更多关于多变量两两相互关系联合分布图的Python绘制的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com