python plotly:条形堆叠图

bmp9r5qi  于 2022-10-30  发布在  Python
关注(0)|答案(1)|浏览(177)

我有一个数据框,其中包含以下数据:

data={'A': {'2020_01': 3, '2020_02': 3, '2020_03': 1, '2020_04': 3, '2020_05': 1},
 'B': {'2020_01': 0, '2020_02': 0, '2020_03': 3, '2020_04': 0, '2020_05': 2},
 'other': {'2020_01': 0,
  '2020_02': 0,
  '2020_03': 3,
  '2020_04': 0,
  '2020_05': 2},
 'total': {'2020_01': 3,
  '2020_02': 3,
  '2020_03': 7,
  '2020_04': 3,
  '2020_05': 5}}
df = pd.DataFrame(data)

我想用ploty在X中表示日期,在y中表示A、B、其他的堆叠值
对于一个小节,我可以做到:

import plotly.express as px
fig = px.bar(df, x=df.index, y='A', text_auto=True,
             labels={'A':'bananas'}, height=400)
fig.show()

我必须如何进行?我检查了一堆文档,但没有结果:结果:

mepcadol

mepcadol1#

你应该做好以下几点:
1.重置索引并将其用作列。
1.使用melt函数将 Dataframe 转换为适当的格式。
1.使用barmode="stack"绘制堆叠条形图。

import plotly.express as px
import pandas as pd

df.reset_index(inplace=True)
df = df.iloc[:,:-1].melt(id_vars='index', var_name='categories', value_name='count')
fig = px.histogram(df, x="index", y="count", text_auto=True, color="categories", barmode="stack",
     labels={'A':'bananas'}, height=400)
fig.show()

输出:

相关问题