具有不同长度数组的seaborn联合图

Posted

技术标签:

【中文标题】具有不同长度数组的seaborn联合图【英文标题】:seaborn jointplot with arrays of different length 【发布时间】:2014-12-08 00:14:03 【问题描述】:

我正在尝试在名为 seaborn 的包(matplotlib 上的包装器)中绘制 2 个变量的联合分布。最终,我想得到这样的东西:http://web.stanford.edu/~mwaskom/software/seaborn/examples/hexbin_marginals.html

问题是当我传递不同长度的数组时,seaborn 会对我发誓。假设,

var1 = [1,1,1,1,1,2,2,2,2,3,3,5,7]
var2 = [1,1,1,1,2,2,2,3,3,3,4,4,5,5,6,6,7,9,10,13]

如果我这样写:

import seaborn as sns
sns.jointplot(var1, var2, kind='hex')

它抛出

ValueError: operands could not be broadcast together with shapes (13) (20)

任何人都知道如何让 seaborn 与此调和吗?

【问题讨论】:

【参考方案1】:

TL/DR:当数组长度不同时,联合图不是一个定义明确的数学运算

您可以将 hexbin 视为散点图,除了绘制点之外,它会略微增加点原本会落入的六边形区域的值。显然,除非你的所有 x 都与 y 配对,否则你无法制作散点图。

数学答案:

在该图中,如果您查看顶部和右侧的直方图,那就是一维频率分布。在主窗口中绘制 2D 分布的目的是查看变量可能是如何依赖的——如果它们是独立的,那么每个 (x,y) 坐标很简单,x 变量的相对频率乘以y 变量(即 x,y 独立的 pdf f(x,y) = f(x)f(y))。

因此,如果您想了解这些变量如何偏离独立性,则必须有关于它们的联合信息——联合意味着对两个变量的观察有一个共同的索引,这里假设为 (0...i)。另见independence on wikipedia 和the independence tag on Cross Validated。

【讨论】:

完全同意你的看法——我的问题真的很愚蠢,应该删除:)

以上是关于具有不同长度数组的seaborn联合图的主要内容,如果未能解决你的问题,请参考以下文章

seaborn使用(样式管理)

seaborn中分组数据的联合图

seaborn联合图上的set_title [重复]

如何在具有不同 Y 轴的同一个 seaborn 图中很好地制作条形图和线图?

如何在子图中绘制多个 Seaborn 联合图

使用seaborn分割不同范围的小提琴图