首页 > 编程语言 >多变量两两相互关系联合分布图的Python绘制

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

时间:2023-02-13 12:44:06浏览次数:43  
标签:kind Python 分布图 column names csv 绘制

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

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

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

  首先,引入需要的模块。

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绘制联合分布图非常简单(这就是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为例,让我们看看效果:

  这样子字体就大了~

标签:kind,Python,分布图,column,names,csv,绘制
From: https://www.cnblogs.com/fkxxgis/p/17115948.html

相关文章

  • 【转发】Python正则表达式,感谢大佬
    原文:https://www.cnblogs.com/QYGQH/p/12653871.html#!comments python正则表达式的实现主要是通过python的re库,re库是python的标准库,所以无须安装1.正则表达式的常用......
  • Python中 字符串的title()方法 首字母大写
    字符串的title方法:1、将字符串中所有单词的首个字母转化为大写,其他字母均转化为小写,特别注意:若在字符串中遇到标点符号、空格、数字等其他非字母元素,则非字母元素后的......
  • python练习记录 2.13
    开始函数部分的学习练习1定义一个函数,此函数能打印一个矩形,自定义函数列数和填充字符 ......
  • 【python】scipy.optimize.curve_fit
    功能使用非线性最小平方差来拟合一个函数功能介绍​​官方文档​​输入参数Valuef函数,它必须以xdata为第一个入参xdata测量的独立数据ydata相关的数据,名义上是f(xdata,…)......
  • 10个用于可解释AI的Python库
    XAI的目标是为模型的行为和决定提供有意义的解释,本文整理了目前能够看到的10个用于可解释AI的Python库什么是XAI?XAI,ExplainableAI是指可以为人工智能(AI)决策过程和预测提......
  • WPF 使用动画绘制一个点赞大拇指
    效果图     好久没有写wpf了。最近看到飞书的点赞动画非常有意思,决定试试,虽然不及飞书那样的绚丽,但是练手还是可以的,希望自己的手艺还在!那么如何写一个这样的......
  • python学习——【第七弹】
    前言学习完python中的序列(​​python学习——【第六弹】​​),这篇文章我们开始学习python中的函数。函数函数就是执行特定任何以完成特定功能的一段代码那么我们为什么要使用......
  • python的几个路径 sys.argv[0],__file__,os.path.curdir
    之前写过一个关于这几个路径的帖子,找不到了,最近又因为这个路径,踩了一把坑,记录一下首先,这三个变量,都是可以用来找到当前脚本所在目录的,sys.argv是参数列表,第一个值,python......
  • Python request
    request  requests¶  get请求¶ In [ ]:importrequestsresponse=requests.get('http://www.baidu.com')#get请求......
  • Python如何创建有声读物
    本文分享一下利用Python的GTTS模块将PDF文本转换为音频,从而将PDF书籍转换为有声读物的脚本:#CreateAudiobooks#pipinstallgTTS#pipinstallPyPDF2fromPyPDF2i......