seaborn jointplot与不同长度的阵列

时间:2014-10-13 12:18:37

标签: python matplotlib pandas visualization seaborn

我试图在名为seaborn的包中绘制2个变量的联合分布(matplotlib上的包装器)。最终,我希望得到这样的结果: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 个答案:

答案 0 :(得分:3)

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

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

mathy answer:

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

因此,如果你想看看这些变量如何偏离独立,你必须得到关于它们的联合信息 - 两个变量的联合意义观察都有一个共同的索引,这里假设为(0 ... i)。另请参阅independence on wikipediathe independence tag on Cross Validated