首页 > 解决方案 > sns.Facetgrid 未显示正常分布线并忽略空间警告

问题描述

我正在尝试创建一个Facetgridwith seaborn 来显示我的所有列分布以及正态分布线以与正常值进行比较。

我的数据框pandas看起来像这样:

     column  values
0     P100m     938
0       Plj    1061
0       Psp     773
0       Phj     859
0     P400m     896
 ...     ...
7967  P110h     741
7967    Ppv     804
7967    Pdt     527
7967    Pjt     738
7967  P1500     523

我在其中添加了一个参数,该参数sns.Facetgrid应该将绘图隔开,这样它们就不会发生冲突。最好我会让它们彼此相邻而不是全部堆叠。我的bins论点也被忽略了,那里显然没有 20 个。

尽管我density=True在图中有参数,但我的正常线也没有出现。这是我的代码和我收到的输出图:

g = sns.FacetGrid(df_stacked, row = 'column', gridspec_kws={"wspace":0.4})
g = g.map(plt.hist, "values", stacked=True, bins = 20, density= True)

在此处输入图像描述

任何帮助,将不胜感激。

标签: pythonpandasmatplotlibseaborn

解决方案


你可以做:

import seaborn as sns
g = sns.FacetGrid(df_stacked,col='column',col_wrap=3)
g = g.map(sns.distplot, 'values',bins=20)

我生成了一些随机数据来填充 DataFrame,如下所示:

import random
l = ['P100m', 'Plj', 'Psp', 'Phj', 'P400m', 'P110h', 'Ppv', 'Pdt', 'Pjt', 'P1500']
ints = [random.randint(500,1100) for i in range(7000)] 
df_stacked = pd.DataFrame({'column':l*700,'values':ints}) 

这将产生类似: 在此处输入图像描述 注意:我无法指定一个“wspace”值来提供足够的空间,所以我把它省略了。


推荐阅读