您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用数据框中的值显示标签堆叠的条码

使用数据框中的值显示标签堆叠的条码

您可以通过注释条与参考问题类似地执行此操作。对于堆积的条形图,您必须稍微调整标签的位置,以使其位于所需位置。您可以使用horizontalalignmentverticalalignment并像我一样添加一点空白(+.5)。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from cycler import cycler

#used gray colormap, you can use your own colors by replacing colormap='gray' with color=colors
colors = ["#252525", "#636363", "#969696", "#cccccc", "#f7f7f7"]
plt.rcParams['axes.prop_cycle'] = cycler(color=colors)

#dummy data
df = pd.DataFrame(np.random.randint(5, 8, (10, 3)), columns=['Group1', 'Group2', 'Group3'])

for col in df.columns.tolist():
    df[col] = df[col].apply(lambda x:x*100 / df[col].sum())

ax = df.T.plot.barh(stacked=True, colormap='gray', edgecolor='black', linewidth=1)

for lbl in ax.patches:
    ax.annotate("{:.0f}%".format(int(lbl.get_width())), (lbl.get_x(), lbl.get_y()+.5), verticalalignment='bottom', horizontalalignment='top', fontsize=8, color='black')

ax.legend(loc='center left', b@R_941_2419@_to_anchor=(1.0, .5))
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)

plt.show()

在此处输入图片说明

其他 2022/1/1 18:43:51 有339人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶