seaborn FacetGrid:绘制一个类别和所有类别

时间:2018-01-24 19:54:02

标签: python pandas plot seaborn

我有一个带有一些数据的pandas数据帧,有些列是类别,在这种情况下(isPassed)只是一个布尔值。

我正在绘制一些直方图,我想绘制所有条目并叠加isPassed为True的那个。例如:

g = sns.FacetGrid(df, col=col_quantity, hue="isPassed")
g = g.map(plt.hist, hist_quantity, bins=np.linspace(-5, 5, 50), normed=False)

对于具有hist_quantity条目的isPassed == 0和具有isPassed == 1的条目,使用不同颜色的直方图。正如我所说,我希望在isPassedTrue or False)和isPassed == 1的{​​{1}}上添加条目而不加任何检查。

当然有很多方法可以做到这一点,但我想与FacetGrid一起做。一种解决方案是复制条目,并为重复的条目设置isPassed == 2,并使用isPassed == 1isPassed == 2绘制一个条目。我不喜欢这个解决方案,最好的解决方案是让hue值接受可调用,或者表达式为pandas.DataFrame.query。其他解决方案?

1 个答案:

答案 0 :(得分:0)

这是我的解决方案,我希望有人有更好的解决方案:

g = sns.FacetGrid(df, col=col_quantity)
def p(x, passed, **kwargs):
    bins = kwargs.get('bins', None)
    plt.hist(x, bins=bins, normed=False)
    plt.hist(x[passed == 1], bins=bins, normed=False)
g = g.map(p, hist_quantity, "isPassed", bins=np.linspace(-5, 5, 50))