matplotlib 向海运直方图注解添加色调

nzrxty8p  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(121)

我有一个代码片段,它在相同的轴上生成2个seaborn.histogram图,按hue分割,并注解如下:

使用hue参数,两个直方图被适当地着色为不同的颜色,并且每个bin中的数据计数也被适当地注解。但是,我还可以对每个bin中的**注解/计数着色吗?
当前MRE

np.random.seed(8)
t = pd.DataFrame(
    {
    'Value': np.random.uniform(low=100000, high=500000, size=(50,)), 
    'Type': ['B' if x < 6 else 'R' for x in np.random.uniform(low=1, high=10, size=(50,))] 
    }
)

ax = sns.histplot(data=t, x='Value', bins=5, hue='Type', palette="dark")
ax.set(title="R against B")
ax.xaxis.set_major_formatter(FormatStrFormatter('%.0f'))
for p in ax.patches:
    ax.annotate(f'{p.get_height():.0f}\n',
                (p.get_x() + p.get_width() / 2, p.get_height()), ha='center', va='center', color='crimson')        
plt.show()
lf5gs5x2

lf5gs5x21#

您正在查找matplotlib.axes.Axes.get_facecolor * 方法 *。
这样,您就可以将每个注解的颜色与相应的历史记录的颜色相匹配。

for p in ax.patches:
    color = p.get_facecolor()
    ax.annotate(f"{p.get_height():.0f}\n", (p.get_x() + p.get_width() / 2, p.get_height()),
                ha="center", va="center", color=color, fontweight="bold")

输出:

相关问题