2015-07-13 38 views
4

我试图产生一个成对比较矩阵的分布图(something like this)。由于我有很多要点,我想使用hexbin图来减少时间和绘图的复杂性。六角形关节图的Seaborn成对矩阵

import seaborn as sns 
import matplotlib.pyplot as plt 


tips = sns.load_dataset("tips") 

g = sns.FacetGrid(tips, col="time", row="sex") 
g.map(sns.jointplot, "total_bill", "tip", kind="hex") 
plt.show() 

尽管如此,不是创建绘图矩阵,而是在各个窗口中独立创建多个绘图。

我也想过使用seaborn.pairplot来产生这个,但我不能通过"hex"作为值到kind

+0

没错我这也用seaborn 0.7.1见。我不知道为什么FacetGrid不能用于联合剧情。 – nickos556

+0

我患有这种相同的行为,我不确定自己是否做错了 - 它会创建阴谋矩阵,清空,然后在矩阵之后依次绘制我的正常jointplot。 – cgseller

+0

这来自jointplot是一个图形级函数,并绘制在它自己的图中,而不是绘制在给定轴上的函数。 在下面的答案中,mwaskom创建使用另一个图形级功能(FacetGrid)并将其映射到其轴上的一个函数,该函数绘制在先前创建的轴中。 – afrendeiro

回答

6

看到tutorial on using custom functions最后一个例子与FacetGrid,我将在这里重现:

def hexbin(x, y, color, **kwargs): 
    cmap = sns.light_palette(color, as_cmap=True) 
    plt.hexbin(x, y, gridsize=15, cmap=cmap, **kwargs) 

g = sns.FacetGrid(tips, hue="time", col="time", size=4) 
g.map(hexbin, "total_bill", "tip", extent=[0, 50, 0, 10]) 

enter image description here