猫图的 Seaborn FacetGrid

yat*_*atu 3 pandas seaborn

我一直在使用seaborn.catplot条形图(下面的数据样本)将counts一组 的列中的值相加reasons,由一组公司分隔:

sns.catplot(x='Bill_Name', y='counts', hue='Reason', 
            data=data, kind='bar', height=6, aspect=13/6, 
            legend=True, palette='hls')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

现在对于每个值还有一个 column year。所以我在考虑使用seaborn.FacetGrid, 以便将上述内容放在行网格中。

因此,如果我理解其正常工作的方式,则sns.FacetGrid必须year在这种情况下将数据和列作为row参数提供,然后使用sns.map, withsns.catplot及其相应的参数,但是这无法正常工作:

g = sns.FacetGrid(data, row="year", height=4, aspect=.5)
g = g.map(sns.catplot, x='Bill_Name', y='counts', hue='Reason', 
            data=data, kind='bar', height=6, aspect=13/6, 
            legend=True, palette='hls')
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?


以下是数据示例:

   Bill_Name      year   Reason  counts
0   CompanyC     2018.0  Reason6       2
1   CompanyC     2017.0  Reason5       8
2   CompanyB     2017.0  Reason3     146
3   CompanyC     2015.0  Reason6       2
4   CompanyC     2017.0  Reason1    1828
5   CompanyC     2016.0  Reason3     237
6   CompanyB     2018.0  Reason4    1097
7   CompanyC     2016.0  Reason4      11
8   CompanyB     2016.0  Reason5      12
9   CompanyC     2017.0  Reason2     834
10  CompanyB     2016.0  Reason3      97
11  CompanyC     2017.0  Reason6     714
12  CompanyA     2017.0  Reason1    4288
13  CompanyA     2016.0  Reason2    2444
14  CompanyC     2017.0  Reason3     293
15  CompanyB     2016.0  Reason1    1576
16  CompanyA     2016.0  Reason4      37
17  CompanyA     2018.0  Reason5       1
18  CompanyC     2018.0  Reason1     908
19  CompanyC     2018.0  Reason2     478
20  CompanyA     2015.0  Reason1    3826
21  CompanyB     2016.0  Reason4     119
22  CompanyB     2017.0  Reason2    1404
23  CompanyC     2016.0  Reason1    1884
24  CompanyC     2015.0  Reason4       1
25  CompanyA     2016.0  Reason1    6360
26  CompanyA     2018.0  Reason3     225
27  CompanyA     2018.0  Reason4      63
28  CompanyC     2018.0  Reason4     162
29  CompanyC     2016.0  Reason2    1504
Run Code Online (Sandbox Code Playgroud)

Gio*_*Gio 5

facetgrid如果将row='year'参数添加到 seaborn ,则可以完全避免catplot

sns.catplot(x='Bill_Name', y='counts', hue='Reason',row='year', data=data, kind='bar', height=6, aspect=13/6, legend=True, palette='hls')
Run Code Online (Sandbox Code Playgroud)