【问题标题】:How create stacked bar chart using list as a column?如何使用列表作为列创建堆积条形图?
【发布时间】:2020-02-11 00:45:11
【问题描述】:

我有一个从 csv 文件创建的数据框。我创建了将列值转换为百分比的计算。

然后我将列转换为列表,现在我想使用列表创建一个堆积条形图,但我不能。

什么是最好的前进方式?

def funcaoStackedBar(data,valor, colX, colStacked):

data[f'perc_{valor}'] = data.apply(lambda x: (x[f'{valor}'] / x[f'{valor}']/ data[f'{valor}'].sum())*100, axis = 1)
tps = data.pivot_table(values=f'perc_{valor}', index=colX, columns=colStacked, aggfunc='sum')

tps = tps.div(tps.sum(1), axis=0)
tps.plot(kind='bar', stacked=True, figsize=(20,10), title='Gráfico de Barras Empilhadas')

【问题讨论】:

标签: python


【解决方案1】:

我不确定您的列表是什么样子,但这是另一种解决方案,可让您从数据框中创建标准化/百分比堆积条形图,假设您正在计算每一行的每列的百分比。

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

# Dummy dataframe
df = pd.DataFrame(data=[[50, 39, 30],
                        [100, 84, 300],
                        [23, 65, 13]],
                  columns=['A', 'B', 'C'])


# Compute the percentage
df = df.div(df.sum(axis=1), axis=0) * 100

# Plot a stacked barchart
ax = df.plot.bar(stacked=True)

# Place the legend
ax.legend(bbox_to_anchor=(1.1, 1.05))
plt.xticks(rotation=60)
plt.ylim(0, 100)
plt.title('Stacked Barchart')
plt.xlabel('Type')
plt.ylabel('Percentage of Type (%)')
plt.show()

【讨论】:

    猜你喜欢
    • 2021-09-28
    • 1970-01-01
    • 2017-01-23
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2021-03-09
    相关资源
    最近更新 更多