我刚开始使用python处理数据,但通过将here和其他网站上的答案放在一起,我已经设法将我的数据集绘制成一个带有条形标签的堆叠条形图。
但是,我希望条形标签根据条形颜色具有不同的文本颜色,以帮助可见性(我限制条形的灰度颜色)我已经找到了一些管理此问题的示例,但它们会干扰代码的其他部分,我不知道如何协调这一点。有人能帮忙吗?
import pandas as pd
import matplotlib.pyplot as plt
plt.style.use('ggplot')
ax = df_new2.plot(kind='barh', stacked=True, figsize=(12, 10), color = ['black','dimgray','darkgray','silver'])
for c in ax.containers:
# customize the label to account for cases when there might not be a bar section
labels = [f'{w:.0f}%' if (w := v.get_width()) > 0.49 else '' for v in c ]
# set the bar label
ax.bar_label(c, labels=labels, label_type='center',color='snow',padding=3,fontsize=8)
ax.legend(bbox_to_anchor=(1.025, 1), loc='upper left', borderaxespad=0.)
ax.set_xlim(right=103)
更新:运气不好,这一个仍然。如果有人能帮忙请告诉我。
2条答案
按热度按时间bfhwhh0e1#
正确的方法是通过
axes.texts
访问标签。bjg7j2ky2#
您可以创建一个所需标签颜色的列表,枚举ax.containers,并在循环中索引label_colors,如下所示。在本例中,我选择了在黑色和暗灰色背景上显示白色标签颜色,而在深灰色和银背景上显示黑色标签颜色,但您可以选择任何所需的颜色。