【问题标题】:Seaborn FacetGrid of catplots猫图的 Seaborn FacetGrid
【发布时间】:2019-10-07 09:54:41
【问题描述】:

我一直在与seaborn.catplot 合作,以便制作一个条形图(数据示例如下),将一组reasonscounts 列中的值相加,由一组公司分隔:

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

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

因此,如果我理解它的正确工作方式,sns.FacetGrid 必须输入数据,在这种情况下,year 列作为row 参数,然后使用sns.mapsns.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

【问题讨论】:

  • “无法正常工作”到底是什么意思?我能够生成图
  • 此外,如果将row 参数添加到sns.catplot,则可以完全避免facetgridsns.catplot(x='Bill_Name', y='counts', hue='Reason',row='year', data=data, kind='bar', height=6, aspect=13/6, legend=True, palette='hls')
  • 谢谢@gio 让我试一试。我得到了各个年份的单独数字,但条形图会出现在下面,而不是按年份分开,而是一起重复多年
  • 那么建议的解决方案(在上面的评论中)应该可以解决问题
  • 很高兴它成功了。我将其添加为答案

标签: pandas seaborn


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-11-14
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 2019-01-02
    • 2016-11-09
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多