<h2>更新日期为<code>matplotlib v3.4.2</code></h2>
<ul>
<li>使用<a href="https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.bar_label.html" rel="nofollow noreferrer">^{<cd2>}</a></li>
<li>有关其他格式选项,请参见<a href="https://matplotlib.org/stable/gallery/lines_bars_and_markers/bar_label_demo.html" rel="nofollow noreferrer">matplotlib: Bar Label Demo</a>页</李>
<li>使用<code>pandas v1.2.4</code>进行测试,它使用<code>matplotlib</code>作为绘图引擎</李>
<li>对于简单格式使用<code>fmt</code>参数,对于自定义字符串格式使用<code>labels</code>参数</李>
<li>有关与新方法相关的其他打印选项,请参见<a href="https://stackoverflow.com/a/67561982/7758804">Adding value labels on a matplotlib bar chart</a></李>
</ul>
<h2>仅适用于单一地块</h2>
<pre class="lang-py prettyprint-override"><code>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')
</code></pre>
<p><a href="https://i.stack.imgur.com/pKXmm.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/pKXmm.png" alt="enter image description here"/></a></p>
<h2>对于单个或多个绘图</h2>
<pre class="lang-py prettyprint-override"><code>g = sns.catplot(x='year', y='income', data=df, kind='bar', col='geo_name', col_wrap=3, legend=True)
g.fig.set_size_inches(15, 8)
g.fig.subplots_adjust(top=0.9)
g.fig.suptitle('Bar Count with Annotations')
# iterate through axes
for ax in g.axes.ravel():
# add annotations
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')
ax.margins(y=0.2)
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/LLvqh.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/LLvqh.png" alt="enter image description here"/></a></p>