亲宝软件园·资讯

展开

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

纯纯子 人气:0

绘制双变量联合分布图

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

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

在Seaborn中绘制连续数值型双变量我们使用sns.jointplot():

说明文档:https://seaborn.pydata.org/generated/seaborn.jointplot.html

 seaborn.jointplot(x, y, data=None, kind='scatter')

散点图

如果我们希望看一看数据中两个变量在二维平面上之间的关系时, 则可以使用散点图,因为散点图可以帮助我们很容易地发现一些数据的分布规律。

 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.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),
 )

加载全部内容

相关教程
猜你喜欢
用户评论