seaborn绘制双变量联合分布图示例详解
作者:纯纯子 发布时间:2021-04-29 01:49:24
绘制双变量联合分布图
有时我们不仅需要查看单个变量的分 布,同时也需要查看变量之间的联系, 往往还需要进行预测等。这时就需要用到双变量联合分布了。
下面我们一起来看一下连续数值型数据双变量之间的可视化方法。
在Seaborn中绘制连续数值型双变量我们使用sns.jointplot()
:
说明文档:https://seaborn.pydata.org/generated/seaborn.jointplot.html
seaborn.jointplot(x, y, data=None, kind='scatter')
x、y:分别记录x轴和y轴的数据名称。
data:数据集,data的数据类型为DataFrame。
kind:用于设置图像的类型,可选的类型有: 'scatter' | 'reg' | 'resid' | 'kde' | 'hex',分别表示散点图、回归图、残差图、 核密度图和蜂巢图。
散点图
如果我们希望看一看数据中两个变量在二维平面上之间的关系时, 则可以使用散点图,因为散点图可以帮助我们很容易地发现一些数据的分布规律。
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df =pd.DataFrame({'x':np.random.normal(size=500),
'y':np.random.normal(size=500)})
sns.jointplot(x='x',y='y',data=df,kind='reg')
plt.show()
双变量散点图:
根据结果我们发现, sns.jointplot()函数可以显示两个变量之间的联合关系以及每个单变量的分布。
我们把函数中的 kind 参数设置为'reg' 就可以做一些简单的线性模型拟合。
并且在坐标系的上方和右侧分别绘制了两个变量的直方图和核密度图。
蜂巢图
上面我们根据数据绘制了联合散点图,但是你会发 现两个数据并没有明确的线性关系,并且散点图有 一个问题,就是相同的点会覆盖在一起,导致我们 看不出来浓密和稀疏。 所以我们可以使用蜂巢图查看一下数据的分布情况。
蜂巢图的绘制还是使用seaborn.jointplot()函 数,只是将kind参数更该为hex即可。
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df =pd.DataFrame({'x':np.random.normal(size=500),
'y':np.random.normal(size=500)})
sns.jointplot(x='x',y='y',data=df,kind='hex')
plt.show()
蜂巢图中每个六边形表示一个范围, 用颜色表示这个范围内的数据量,颜 色越白的地方数据量越小,颜色越深 的地方表示数据量越大。 当数据比较大的时候该种方式,更容易找出数据的分布情况。
密度图
在单变量分析的时候,我们绘制了单变量的概率密度曲线, 在双变量中我们也可以使用密度图来分析数据的分布情况。 密度图的绘制还是使用seaborn.jointplot()函数,只是将 kind参数更该为kde即可。
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df =pd.DataFrame({'x':np.random.normal(size=500),
'y':np.random.normal(size=500)})
sns.jointplot(x='x',y='y',data=df,kind='kde')
plt.show()
根据图形可以看出,双变量密度图是使用一些封闭 但是不规则的曲线来表示, 数据密度越高的地方颜色越深,数据密度越低的地方颜色越浅。
g = sns.jointplot(data=x_data, x=x, y=y)
g.plot_joint(sns.kdeplot, color="r", zorder=0, levels=6)
g.plot_marginals(sns.rugplot, color="r", height=-.15, clip_on=False)
sns.jointplot(
data=x_data, x=x, y=y,
marker="+", s=100, marginal_kws=dict(bins=25, fill=False),
)
来源:https://juejin.cn/post/7180599580793241660
猜你喜欢
- Go文档中展示了多种方式实现外部资源嵌入,包括文本文件、图片、ios文件等:文本文件package mainimport _ "e
- 一 Process对象的join方法在主进程运行过程中如果想并发地执行其他的任务,我们可以开启子进程,此时主进程的任务与子进程的任务分两种情
- 一、实现过程终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关转义序列是以ESC开头,即用\033来完成(ESC
- Limit语法:SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offsetL
- 本文实例为大家分享了python字符串的操作方法,供大家参考,具体内容如下1.去除空格str.strip():删除字符串两边的指定字符,括号
- 网上大部分的免费asp程序使用的是access数据库。但是access数据库作为一个中小型的单机数据库系统,在承担访问量、数据量大的网站应用
- 最近开始学Python,想直接通过命令行的方式进行学习。奈何没有Tab补全,操作实在麻烦,网上各种百度后无果(x64系统,x86的可以直接下
- 前言对自己写的冗长代码,想重构但又无思路?小编整理了介绍python代码重构优化的一些方法,助你一臂之力。编写干净的 Pythonic 代码
- 代码如下:using System; using System.Data; using System.Configuration; usin
- (1)最近真是郁闷,在Myeclipse中使用DB Browser但出现以下问题:(2)然后赶紧百度,求大神解决,主要的解决方法试一下几种:
- I. 前言在上一篇文章深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)中,我详细地解释了如何利用PyTor
- 本文实例讲述了利用PHP函数计算中英文字符串长度的方法。分享给大家供大家参考。具体实现方法如下:一般来说大家知道英文字符占一个字节,而中文字
- 1, 创建pytorch 的Tensor张量:torch.rand((3,224,224)) #创建随机值的三维张量,大小为(3,224,2
- 代码自动填充了空格 问题在使用pycharm的代码编辑器时,常常懒得写空格,如下图,但这是不符合代码规范的,而且也会影响可读性。解决方法py
- 1:mysql是我们使用最多的数据库,如果在日常中正确的对mysql数据进行备份,下面我们就来做这事,通过脚本来实现############
- 说来惭愧,以前在去掉数组的空值是都是强写foreach或者while的,利用这两个语法结构来删除数组中的空元素,简单代码如下:<?ph
- 总的来说,提高应用程序性能的最好的方法是发现应用的瓶径之所在,和数据库进行交互的性能无疑是决定应用程序性能的重要环节之一。因为ADO是当前最
- 前言今天笔者想和大家来聊聊python接口自动化如何使用requests库发送http请求,废话呢笔者就不多说了,直接进入正题。一、requ
- 1 引言如果你想对图像进行校准,那么透视变换是非常有效的变换手段。透视变换的定义为将图像投影到一个新的视平面,通常也被称之为投影映射。2 公
- 如果是感应触发.就选onmouseover如果是点击触发.就选onclick [把它们两互相替换,就可随时变为感应