具有不同长度数组的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联合图的主要内容,如果未能解决你的问题,请参考以下文章