我试图在名为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与此协调?
答案 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 wikipedia和the independence tag on Cross Validated。