abc*_*abc 4 python matplotlib bar-chart pandas stacked-bar-chart
我一直在尝试用其值来注释堆积条形图的每个子金额,如上图所示(值不准确,只是一个示例)。
df.iloc[1:].T.plot(kind='bar', stacked=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)
链接的帖子与我的问题有些相似,但我不理解该答案中给出的代码,也没有给出任何解释。
Tre*_*ney 12
import pandas as pd
import matplotlib.pyplot as plt
data = {'var': ['TR', 'AC', 'F&B'], '2019 1Q': [6600, 1256, 588], '2019 2Q': [6566, 1309, 586], '2019 3Q': [7383, 1525, 673]}
df = pd.DataFrame(data)
df.set_index('var', inplace=True)
# display(df)
2019 1Q 2019 2Q 2019 3Q
var
TR 6600 6566 7383
AC 1256 1309 1525
F&B 588 586 673
Run Code Online (Sandbox Code Playgroud)
matplotlib v3.4.2matplotlib.pyplot.bar_label.bar_label。pandas v1.2.4,它用作matplotlib绘图引擎。ax = df.T.plot.bar(stacked=True, figsize=(6, 5), rot=0)
for c in ax.containers:
ax.bar_label(c, label_type='center')
ax.legend(title='Categories', bbox_to_anchor=(1.05, 1), loc='upper left')
Run Code Online (Sandbox Code Playgroud)
matplotlib v3.4.2pandas.DataFrame.plot.bar与 一起使用stacked=True。ndarray返回为matplotlib.axes.Axes每列一个subplots=True。
ax.patches包含 9 个matplotlib.patches.Rectangle对象,每个条形的每个段都有一个对象。
height、width、x和y位置,并将其用于注释矩形。ax = df.T.plot.bar(stacked=True)
plt.legend(title='Categories', bbox_to_anchor=(1.05, 1), loc='upper left')
for i, rect in enumerate(ax.patches):
# Find where everything is located
height = rect.get_height()
width = rect.get_width()
x = rect.get_x()
y = rect.get_y()
# The height of the bar is the count value and can used as the label
label_text = f'{height:.0f}'
label_x = x + width / 2
label_y = y + height / 2
# don't include label if it's equivalently 0
if height > 0.001:
ax.text(label_x, label_y, label_text, ha='center', va='center', fontsize=8)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6003 次 |
| 最近记录: |