绘制堆积条形图熊猫数据框

fre*_*rtz 2 python pandas plotly

我有一个包含不同列数的数据框。具有正值和负值。是否可以在数据框中使用所有这些列制作堆积条形图?

在此处输入图片说明

    A    B     C
0   34   34    -12
1   34   223   -12
2  34    56    -12
3   34   86    -12
4   56   86    -12
5   56   43    -12
6   78   34    -12
Run Code Online (Sandbox Code Playgroud)

ves*_*and 5

(更新版本的 plotly 的更新答案)

使用px.bar将直接为您提供堆叠条形图。如果您的条形图由于某种原因没有堆叠,请尝试:

fig.update_layout(barmode='stack')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

完整代码:

import pandas as pd
import plotly.express as px

# data
df = pd.DataFrame({'A': {0: 34, 1: 34, 2: 34, 3: 34, 4: 56, 5: 56, 6: 78},
                     'B': {0: 34, 1: 223, 2: 56, 3: 86, 4: 86, 5: 43, 6: 34},
                     'C': {0: -12, 1: -12, 2: -12, 3: -12, 4: -12, 5: -12, 6: -12}})

colors = px.colors.qualitative.T10

# plotly
fig = px.bar(df, 
             x = df.index,
             y = [c for c in df.columns],
             template = 'plotly_dark',
             color_discrete_sequence = colors,
             title = 'Stacked bar chart using px.bar()', 
             )

fig.show()
Run Code Online (Sandbox Code Playgroud)

旧答案:


这是在 Jupyter Notebook 中使用 plotly offline 的堆积条形图。只要确保您安装了下面列出的软件包importsdf = cf.datagen.lines()使用来自袖扣的样本数据生成一个熊猫数据框。

绘制堆积条形图:

在此处输入图片说明

可重现的片段:

# imports
import plotly
import cufflinks as cf
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import pandas as pd
import numpy as np

# setup
init_notebook_mode(connected=True)
np.random.seed(123)
cf.set_config_file(theme='pearl')

# qtconsole for debugging
#%qtconsole --style vim #src# https://qtconsole.readthedocs.io/en/stable/

# Random data using cufflinks
df = cf.datagen.lines()
df = df[['UUN.XY', 'MJF.XV', 'XBB.AO']].head(50)
df=np.abs(df)

# make figure
fig = df.iplot(asFigure=True, kind='bar', barmode = 'stack',
               xTitle='Dates',yTitle='Returns',title='Returns')

# plot figure
iplot(fig)
Run Code Online (Sandbox Code Playgroud)

编辑 -用负值测试


这是没有线路运行的相同内容 df=np.abs(df)

在此处输入图片说明