如何使用刻面创建条形图并使用Seaborn添加标签

时间:2019-07-29 14:40:47

标签: python python-3.x seaborn

我有以下dataframe

import pandas as pd    
df = pd.DataFrame({'reg' : ['A', 'B', 'C'],
                   'file': ['1', '1', '2'],
                   'val' : [1, 2, 3]})

我想使用barplot创建一个seaborn,用faceting创建file,用reg着色,并添加val在每个栏的顶部

我已经尝试过了

  import seaborn as sns
  g = sns.FacetGrid(df, col='file', hue='reg', col_wrap=2)
  g.map(sns.barplot, 'reg', 'val').add_legend()
  g.savefig('test_so.png')

但是,这不能正确着色

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您需要order参数,在下面的@jdehesa中添加unique

g = sns.FacetGrid(df, col='file', hue='reg', col_wrap=2)
g.map(sns.barplot, 'reg', 'val', order=df.reg.unique()).add_legend()

输出:

enter image description here


在facetgrid图中的条形上添加标签

g = sns.FacetGrid(df, col='file', hue='reg', col_wrap=2)
g.map(sns.barplot, 'reg', 'val', order=df.reg.unique()).add_legend()

for ax in g.axes:
    for p in ax.patches:
             ax.annotate("%.2f" % p.get_height(), (p.get_x() + p.get_width() / 2., p.get_height()),
                 ha='center', va='center', fontsize=11, color='black', xytext=(0, 5),
                 textcoords='offset points')

输出: enter image description here