Python+seaborn实现联合分布图的绘制
作者:疯狂学习GIS 发布时间:2022-06-14 01:23:53
本文介绍基于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
为例,让我们看看效果:
这样子字体就大了~
来源:https://www.cnblogs.com/fkxxgis/p/17115948.html
猜你喜欢
- 目录实例演示1. axios上传普通文件:2. 大文件导入:结语这次我要讲述的是在React-Flask框架上开发上传组件的技巧。我目前主要
- 目录假想场景基本思路pywinauto方案win32gui方案更一般的方案利用Python进行Excel自动化操作的过程中,尤其是涉及VBA
- //关闭,父窗口弹出对话框,子窗口直接关闭this.Response.Write("<script language=jav
- 本文实例讲述了JS+CSS实现仿支付宝菜单选中效果代码。分享给大家供大家参考。具体如下:这是一个漂亮的JS+CSS仿支付宝菜单,总体风格和形
- #!/usr/bin/python## get subprocess module import subprocess ## ca
- 数据类型是所有开发语言的基础,JavaScript虽然是一个弱类型的脚本语言,但是在数据类型上也有很多讲究的,看了淘宝UED玉伯的一篇文章,
- 近来想要做一做人脸识别相关的内容,主要是想集成一个系统,看到opencv已经集成了三种性能较好的算法,但是还是想自己动手试一下,毕竟算法都比
- <? // 建立一个指向新COM组件的索引 $word = new C
- 我们将会看到一些在Python中使用线程的实例和如何避免线程之间的竞争。你应当将下边的例子运行多次,以便可以注意到线程是不可预测的和线程每次
- 一行拆分成多行1.根据某一列拆分效果:代码:if __name__ == '__main__':
- 如下所示:# 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value
- 学会了FSO提取文件值,也学会了将信息输入到文件中,那下面就再来应用应用下。不知道你有没有这样的习惯:看到一个文件,不自觉的右键选择用记事本
- 大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引可以提高数据访问效率。为什么索引能提高数据访问性能?他会不会有“副作用”?是不是
- TF-IDFTF-IDF(Term Frequencey-Inverse Document Frequency)指词频-逆文档频率,它属于数
- LyScript是一款x64dbg主动化操控插件,经过Python操控X64dbg,完成了远程动态调试,解决了逆向工作者剖析漏洞,寻觅指令片
- 本文实例讲述了python3.6生成器yield用法。分享给大家供大家参考,具体如下:今天看源码的时候看到了一个比较有意思的函数:yield
- sql注入:正常情况下:delete.php?id=3;$sql = 'delete from news where id =
- 先给大家介绍下python中format函数,在文章下面给大家介绍python.format()函数的简单使用---恢复内容开始---pyt
- Sun Microsystems公司宣布,正式对外提供MySQL 5.1软件——这是全球最受欢迎的开
- 今天工作中遇到,拿出来说说。网上CSS下拉菜单不少,不过都存在这样那样的问题,主要问题是,如果你菜单下面有一个FLASH的话,很多都会被FL