Python 根据下拉列表,并排绘制堆叠条形图

Python 根据下拉列表,并排绘制堆叠条形图,python,python-3.x,plotly,plotly-dash,Python,Python 3.x,Plotly,Plotly Dash,我有以下数据框: -dcc。选择问题的下拉列表显示在页面的此处- Job Tenure Location Topic CSM 3-5 England Budget cuts CSM 6-10 Scotland Budget cuts SA 0-2 India Time consuming demands SA 3-5 England Lack of oversight SA 6-10 Germany Lack of

我有以下数据框:

-dcc。选择问题的下拉列表显示在页面的此处-

Job  Tenure  Location  Topic
CSM   3-5    England   Budget cuts 
CSM   6-10   Scotland  Budget cuts
SA    0-2    India     Time consuming demands
SA    3-5    England   Lack of oversight
SA    6-10   Germany   Lack of support
MIA   11-15  India     Lack of support
ADCS  20+    England   Bureaucracy
MIA   16-20  Ireland   Bureaucracy
ADCS  20+    USA       Budget cuts
最终结果需要有三组图表。每组由两个并排堆叠的条形图组成

结果是这样的:

图1由两条并排的条组成:

条1=堆叠作业高度=9,堆栈由2xCSM、3xSA、2xMIA和2xADC组成

bar2=按角色划分的问题细分。e、 g.如果在下拉列表中选择了问题预算削减,则该图的高度为3,堆栈由2xCSM、1xADC组成

从下拉列表中选择问题时,栏2需要更新。因此,如果我现在选择“缺少监督”,则条2的高度将为1,由作业1 x SA堆叠

图2和图3与上述相同,但分别针对任期和地点,而非工作。因此,在上面的实例中,堆栈将是作业所在的所有实例中的保留期/位置

老实说,即使有人能告诉我如何做第一个图表,我也可以复制图表2和3的代码。我希望这是有道理的

这是我得到的输出。我基本上希望这两条线在同一个轴上,不要像这里那样分开,忽略高度值,因为我的df大于我在这里给出的值


谢谢各位

下面是一个简单的工作示例,改编自

import dash
import dash_core_components as dcc
import dash_html_components as html

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

app.layout = html.Div(children=[
    html.H1(children='Hello Dash'),

    html.Div(children='''
        Dash: A web application framework for Python.
    '''),

    dcc.Graph(
        id='example-graph',
        figure={
            'data': [
                {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
                {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'},
                {'x': [1, 2, 3], 'y': [5, 2, 6], 'type': 'bar', 'name': 'SF', 'xaxis': 'x2',},
                {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': u'Montréal', 'yaxis': 'y2',},
            ],
            'layout': {
                'title': 'Dash Data Visualization',
                'xaxis': {'domain':[0, 0.5]},
                'xaxis2': {'domain':[0.6, 1]},
                'yaxis2': {'anchor': 'x2'}
            }
        }
    )
])

if __name__ == '__main__':
    app.run_server(debug=True)
它的输出应该是


在@user832222获取战利品我只是好奇。这个建议解决了你的挑战吗?是的,终于找到了适合我的方法。谢谢