Seaborn Catplot在条形图上设置值 [英] Seaborn Catplot set values over the bars
本文介绍了Seaborn Catplot在条形图上设置值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在 seaborn
中绘制了一个 catplot
像这样
导入 seaborn 为 sns将熊猫作为pd导入数据= {'year':[2016、2013、2014、2015、2016、2013、2014、2015、2016、2013、2014、2015、2016、2013、2014、2015、2016、2013、2014、2015],'geo_name': ['密歇根州', '密歇根州', '密歇根州', '密歇根州', '密歇根州沃什特诺县', '密歇根州沃什特诺县', '密歇根州沃什特诺县', '密歇根州沃什特诺县', '安Arbor, MI', 'Ann Arbor, MI', 'Ann Arbor, MI', 'Ann Arbor, MI', 'Philadelphia, PA', 'Philadelphia, PA', 'Philadelphia, PA', 'Philadelphia, PA',密歇根州都会区安阿伯市",密歇根州都会区安阿伯市",密歇根州都会市安阿伯市",密歇根州都会市安阿伯市","geo":['04000US26','04000US26','04000US26','04000US26','05000US26161','05000US26161','05000US26161','05000US26161','16000US2603000','16000US2603000','16000US2603000','16000US2603000','16000US4260000','16000US4260000','16000US4260000'','16000US4260000','31000US11460','31000US11460','31000US11460','31000US11460'],收入":[50803.0,48411.0,49087.0,49576.0,62484.0,59055.0,60805.0,61003.0,57697.0,55003.0,56835.0,55990.0,39770.0,37192.0,37460.0,38253.0,62484.0,59055.0,60805.0,61003.0],'income_moe':[162.0,163.0,192.0,186.0,984.0,985.0,958.0,901.0,2046.0,1688.0,1320.0,1259.0,567.0,424.0、430.0、511.0、984.0、985.0、958.0、901.0]}df = pd.DataFrame(数据)g = sns.catplot(x ='year',y ='income',data = df,kind ='bar',hue ='geo_name',legend = True)g.fig.set_size_inches(15,8)g.fig.subplots_adjust(top = 0.81,right = 0.86)
我得到如下所示的输出
我想以K表示形式将每个条的值添加到其顶部.例如在 2013
中 Michigan
的栏位于 48411
所以我想在它上面添加值 48.4K
酒吧.对于所有的酒吧也是如此.
解决方案
自 matplotlib v3.4.2
更新- 使用
I plotted a
catplot
inseaborn
like thisimport seaborn as sns import pandas as pd data = {'year': [2016, 2013, 2014, 2015, 2016, 2013, 2014, 2015, 2016, 2013, 2014, 2015, 2016, 2013, 2014, 2015, 2016, 2013, 2014, 2015], 'geo_name': ['Michigan', 'Michigan', 'Michigan', 'Michigan', 'Washtenaw County, MI', 'Washtenaw County, MI', 'Washtenaw County, MI', 'Washtenaw County, MI', 'Ann Arbor, MI', 'Ann Arbor, MI', 'Ann Arbor, MI', 'Ann Arbor, MI', 'Philadelphia, PA', 'Philadelphia, PA', 'Philadelphia, PA', 'Philadelphia, PA', 'Ann Arbor, MI Metro Area', 'Ann Arbor, MI Metro Area', 'Ann Arbor, MI Metro Area', 'Ann Arbor, MI Metro Area'], 'geo': ['04000US26', '04000US26', '04000US26', '04000US26', '05000US26161', '05000US26161', '05000US26161', '05000US26161', '16000US2603000', '16000US2603000', '16000US2603000', '16000US2603000', '16000US4260000', '16000US4260000', '16000US4260000', '16000US4260000', '31000US11460', '31000US11460', '31000US11460', '31000US11460'], 'income': [50803.0, 48411.0, 49087.0, 49576.0, 62484.0, 59055.0, 60805.0, 61003.0, 57697.0, 55003.0, 56835.0, 55990.0, 39770.0, 37192.0, 37460.0, 38253.0, 62484.0, 59055.0, 60805.0, 61003.0], 'income_moe': [162.0, 163.0, 192.0, 186.0, 984.0, 985.0, 958.0, 901.0, 2046.0, 1688.0, 1320.0, 1259.0, 567.0, 424.0, 430.0, 511.0, 984.0, 985.0, 958.0, 901.0]} df = pd.DataFrame(data) g = sns.catplot(x='year', y='income', data=df, kind='bar', hue='geo_name', legend=True) g.fig.set_size_inches(15,8) g.fig.subplots_adjust(top=0.81,right=0.86)
I am getting an output like shown below
I want to add the values of each bar on its top in K representation. For example in
2013
the bar forMichigan
is at48411
so I want to add the value48.4K
on top of that bar. Likewise for all the bars.解决方案Updated as of
matplotlib v3.4.2
- Use
matplotlib.pyplot.bar_label
- See the matplotlib: Bar Label Demo page for additional formatting options.
- Tested with
pandas v1.2.4
, which is usingmatplotlib
as the plot engine. - Use the
fmt
parameter for simple formats, andlabels
parameter for customized string formatting. - See Adding value labels on a matplotlib bar chart for other plotting options related to the new method.
g = sns.catplot(x='year', y='income', data=df, kind='bar', hue='geo_name', legend=True) g.fig.set_size_inches(15, 8) g.fig.subplots_adjust(top=0.81, right=0.86) # extract the matplotlib axes_subplot objects from the FacetGrid ax = g.facet_axis(0, 0) # iterate through the axes containers for c in ax.containers: labels = [f'{(v.get_height() / 1000):.1f}K' for v in c] ax.bar_label(c, labels=labels, label_type='edge')
这篇关于Seaborn Catplot在条形图上设置值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
- Use
查看全文