【问题标题】:Stacked Bar Chart with Total values on Top顶部有总值的堆积条形图
【发布时间】:2022-08-19 08:18:41
【问题描述】:

这是我的数据:

import pandas as pd
import matplotlib.pyplot as plt

data = {\'Client\': [\'Client_1\', \'Client_2\', \'Client_3\'], 
        \'Currency\': [\'USD\',\'USD\',\'USD\'], 
        \'Product_1\': [1200, 1400, 3300], 
        \'Product_2\': [3000, 500, 550], 
        \'Product_3\': [200, 4000, 100], 
        \'Product_4\': [3000, 0, 100]}  

DF = pd.DataFrame(data)
DF[\'Total Purchases\'] = DF.sum(axis=1, numeric_only=True)
print(DF)

我使用堆积条形图工具来绘制数据。

DF.drop(columns=\'Total Purchases\').plot(x=\'Client\', kind=\'bar\', stacked=True, figsize=(10,10)).legend(loc=\'upper center\', ncol=5, title=\"Prices\")

问题 : 如何为每个产品添加其价格和每个堆叠条顶部每个客户的“总购买量”值?

先感谢您。

    标签: python dataframe matplotlib plot data-analysis


    【解决方案1】:

    这个功能应该有帮助。

    def addlabels(x,y):
        for i in range(len(x)):
            plt.text(i, y[i], y[i], ha = 'center')
    

    我不知道你的初始代码;这就是我试图重现的内容。

    plt.bar(DF['Client'], DF['Product_1'])
    plt.bar(DF['Client'], DF['Product_2'], bottom=DF['Product_1'])
    plt.bar(DF['Client'], DF['Product_3'], bottom=DF['Product_2']+DF['Product_1'])
    plt.bar(DF['Client'], DF['Product_4'], bottom=DF['Product_3']+DF['Product_2']+DF['Product_1'])
    plt.legend(['Product_1', 'Product_2', 'Product_3', 'Product_4'])
    addlabels(DF['Client'], DF['Total Purchases'])
    

    【讨论】: