使用Seaborn中的值标记水平条形图

时间:2018-04-13 15:33:07

标签: python matplotlib seaborn

我有一个水平条形图,例如,seaborn文档中的示例的简化版本:https://seaborn.pydata.org/examples/horizontal_barplot.html

import seaborn as sns
import matplotlib.pyplot as plt

f, ax = plt.subplots(figsize=(6, 15))

crashes = sns.load_dataset("car_crashes").sort_values("total", ascending=False)

sns.barplot(x="total", y="abbrev", data=crashes,
            label="Total", color="b")

ax.set(xlim=(0, 24), ylabel="",
       xlabel="Automobile collisions per billion miles")


plt.show()

如何获得标有每个条形值的条形图?

我尝试了这种方法用于垂直条(How to add percentages on top of bars in seaborn?),但它似乎不起作用。将高度更改为宽度不会产生我认为会产生的效果。

for p in ax.patches:
    height = p.get_width()
    ax.text(p.get_y()+p.get_height()/2.,
            height + 3,
            '{:1.2f}'.format(height),
            ha="center")

我假设水平情节的工作方式不同?

1 个答案:

答案 0 :(得分:1)

得知它,感谢ImportanceOfBeingErnest

这对我有用

 p in ax.patches:
    width = p.get_width()
    ax.text(width -1.5  ,
            p.get_y()+p.get_height()/2. + 0.2,
            '{:1.2f}'.format(width),
            ha="center")