开启生长之旅!这是我参与「日新方案 12 月更文应战」的第33天,点击检查活动详情

制作双变量联合散布图

有时咱们不仅需求检查单个变量的分 布,同时也需求检查变量之间的联络, 往往还需求进行猜测等。这时就需求用到双变量联合散布了。

下面咱们一起来看一下接连数值型数据双变量之间的可视化办法。

在Seaborn中制作接连数值型双变量咱们运用sns.jointplot():

说明文档:点击跳转

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

双变量散点图:

seaboard绘制双变量联合分布图

  • 依据结果咱们发现, 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()

seaboard绘制双变量联合分布图

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

密度图

在单变量剖析的时候,咱们制作了单变量的概率密度曲线, 在双变量中咱们也能够运用密度图来剖析数据的散布情况。 密度图的制作仍是运用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()

seaboard绘制双变量联合分布图

依据图形能够看出,双变量密度图是运用一些封闭 但是不规则的曲线来表明, 数据密度越高的当地色彩越深,数据密度越低的当地色彩越浅。

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)

seaboard绘制双变量联合分布图

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

seaboard绘制双变量联合分布图