Seaborn FacetGrid от кошачьих участков - PullRequest
2 голосов
/ 07 октября 2019

Я работал с 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')

enter image description here

Теперь для каждого значения есть также столбец year. Так что я подумал об использовании seaborn.FacetGrid, чтобы получить все вышеперечисленное в сетке строк.

Так что, если я понял, как это работает правильно, sns.FacetGrid необходимо передать данные и столбец year в этом случае в качестве аргумента row, а затем использовать sns.map с sns.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')

Что я делаю не так?


Вот пример данных:

   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

1 Ответ

4 голосов
/ 07 октября 2019

Вы можете полностью избежать facetgrid, добавив аргумент row='year' к морскому рожку 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...