Python+seaborn实现联合分布图的绘制

作者:疯狂学习GIS 时间:2022-06-14 01:23:53 

本文介绍基于Pythonseaborn模块,实现联合分布图绘制的方法。

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

Python+seaborn实现联合分布图的绘制

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

首先,引入需要的模块。

import pandas as pd
import seaborn as sns

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

Python+seaborn实现联合分布图的绘制

导入数据的代码如下:

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+seaborn实现联合分布图的绘制

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

Python+seaborn实现联合分布图的绘制

可以看到,我们不用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'为例,绘图结果如下:

Python+seaborn实现联合分布图的绘制

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

Python+seaborn实现联合分布图的绘制

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

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

sns.set(font_scale=1.2)

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

Python+seaborn实现联合分布图的绘制

这样子字体就大了~

来源:https://www.cnblogs.com/fkxxgis/p/17115948.html

标签:Python,seaborn,联合分布图
0
投稿

猜你喜欢

  • python发送邮件功能实现代码

    2021-04-20 13:51:28
  • Vue watch监听使用的几种方法

    2024-05-09 15:08:40
  • python pycurl验证basic和digest认证的方法

    2022-12-17 23:01:15
  • 如何使用Python实现自动化水军评论

    2022-08-25 21:15:48
  • Python unittest单元测试框架实现参数化

    2022-11-01 18:29:48
  • 在Vue项目中取消ESLint代码检测的步骤讲解

    2024-05-29 22:23:03
  • python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例

    2022-02-07 05:22:10
  • python实现图片插入文字

    2021-11-02 20:32:09
  • Python 列表映射后的平均值

    2021-12-25 19:02:39
  • python matplotlib绘图实现删除重复冗余图例的操作

    2023-11-02 22:36:44
  • C#操作数据库总结(vs2005+sql2005)

    2024-01-20 22:20:29
  • Python调用Redis的示例代码

    2021-02-10 09:51:10
  • 解决python中文乱码问题方法总结

    2022-01-30 18:47:56
  • 微信小程序实现2048小游戏的详细过程

    2024-04-23 09:11:18
  • Python 求向量的余弦值操作

    2022-11-24 22:51:11
  • ASP日期格式化函数

    2010-08-08 19:18:00
  • Python批量修改文件名的方式详解

    2023-05-15 20:56:08
  • 使用pyshp包进行shapefile文件修改的例子

    2023-07-01 08:28:35
  • 详解python 条件语句和while循环的实例代码

    2023-11-19 11:32:58
  • 在Python程序和Flask框架中使用SQLAlchemy的教程

    2021-10-28 06:14:21
  • asp之家 网络编程 m.aspxhome.com