seaborn绘制双变量联合分布图示例详解

2022-12-25 11:08:27

目录绘制双变量联合分布图散点图蜂巢图密度图绘制双变量联合分布图有时我们不仅需要查看单个变量的分布,同时也需要查看变量之间的联系,往往还需要进行预测等。这时就需要用到双变量联合分布了。下面我们一起来...

目录
绘制双变量联合分布图
散点图
蜂巢图
密度图

制双变量联合分布图

有时我们不仅需要查看单个变量的分 布,同时也需要查看变量之间的联系, 往往还需要进行预测等。这时就需要用到双变量联合分布了。

下面我们一起来看一下连续数值型数据双变量之间的可视化方法。

在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()

双变量散点图:

seaborn绘制双变量联合分布图示例详解

根据结果我们发现, 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绘制双变量联合分布图示例详解

蜂巢图中每个六边形表示一个范围, 用颜色表示这个范围内的数据量,颜 色越白的地方数据量越小,颜色越深 的地方表示数据量越大。 当数据比较大的时候该种方式,更容易找出数据的分布情况。

密度图

在单变量分析的时候,我们绘制了单变量的概率密度曲线, 在双变量中我们也可以使用密度图来分析数iYkfEIv据的分布情况。 密度图的绘制还是使用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()

seaborn绘制双变量联合分布图示例详解

根据图形可以看出,双变量密度图是使用一些封闭 但是不规则的曲线来表示, 数据密度越高的地方颜色越深,数据密度越低的地方颜色越浅。

 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)

seaborn绘制双变量联合分布图示例详解

%20sns.jointplot( %20%20%20%20%20data=x_data,%20x=x,%20y=y, %20%20%20%20%20marker="+",%20s=100,%20marginal_kws=dict(bins=25,%20fill=False), %20)

以上就是seaborn绘制双变量联合分布图示例详解的详细内容,更多关于seaborn绘制双变量联合分布图的资料请关注我们其它相关文章!