如何绘制每行不同变量的Seaborn FacetGrid?

时间:2018-03-17 00:13:21

标签: pandas plot statistics seaborn

我有一个Pandas数据框,其中包含一列分类变量C={A,B,C,..}和一些数字列var1var2,...,var_n。我想绘制一个网格,其中每行包含以所有不同分类变量为条件的数字列的直方图(每列一个)。只有一个数值变量非常简单,但是,我无法将其扩展到多个变量。我可以通过子图来做到这一点,但我想知道它是否直接存在于Seaborn中

这就是我想要的,

A-list(var1) | B-hist(var1) | C-hist(var1)...
A-hist(var2) | B-hist(var2) | C-hist(var2)...
A-hist(var3) | B-hist(var3) | C-hist(var3)...
....

1 个答案:

答案 0 :(得分:0)

正如@ImportanceOfBeingErnest在评论中指出的那样,如果以整洁的方式正确设置Pandas数据框,则不需要花哨的绘图技巧。也就是说,作为(categories, variables, data)的行,其中变量现在是一列标签,表示数据所属的先前列名。通常,当给定变量的数据具有不同的长度时,此结构会自动发生。

以这种格式(Categories, Variables, Data)放置数据框后,您可以像往常一样用matplotblib和seaborn绘制它们,

g = sns.FacetGrid(data=df, col='Categories', row='Variables')
g = g.map(plt.hist, "Data")
plt.subplots_adjust(top=0.9)
g.fig.suptitle('Histogram of variables conditioned on categories')
plt.show()