[Python] Repetition of key data in plotly

Discussão em 'Python' iniciado por Stack, Julho 21, 2025.

  1. Stack

    Stack Membro Participativo

    I have the following input data format:

    CustomerRef London Edinburgh Cardiff
    0001 A A A
    0002 D D B
    0003 B A A
    0004 D D B
    0005 A C A
    0006 D D B
    0007 A D A
    0008 D C B

    I want to generate a chart like this, with one column on the chart per City column in my data, stacked so I can see the totals of A,B,C & D in a single column : [​IMG]

    I've only been able to find examples which merge multiple columns into a single chart, or which take an input which would require me to transform the data significantly (e.g. https://plotly.com/python/bar-charts/#stacked-bar-chart where I would need to provide it a series of values of 'A', then 'B', etc), or do some kind of counting beforehand (e.g. https://plotly.com/python/histograms/#specify-aggregation-function or https://plotly.com/python/bar-charts/#bar-charts-with-long-format-data)

    Here's my code:

    import pandas as pd
    import plotly.graph_objects as go
    from dash import Dash, html, dash_table, dcc, callback, Output, Input


    df = pd.read_csv("sentiment.csv")

    #generate unique list of values for London
    london_values = df['london'].unique()

    #name the London column
    london_col_name = ['London']
    edi_col_name = ['Edinburgh']
    cardiff_col_name = ['Cardiff']

    bars = []
    for res in df['london'].unique():
    bar = go.Bar(name=res, x=london_col_name, y=df[df['london'] == res])
    bars.append(bar)

    for res in df['edinburgh'].unique():
    bar = go.Bar(name=res, x=edi_col_name, y=df[df['edinburgh'] == res])
    bars.append(bar)

    for res in df['cardiff'].unique():
    bar = go.Bar(name=res, x=cardiff_col_name, y=df[df['cardiff'] == res])
    bars.append(bar)

    fig = go.Figure(data=bars)
    fig.update_layout(barmode='stack', title='Results By Location')

    app = Dash()
    app.layout = html.Div([
    dcc.Graph(figure=fig)
    ])

    if __name__ == '__main__':
    app.run(debug=True)


    I'm seeing repetition of the outputs in the key ("ABDCADCADCA" etc). I would like to know how to get the key to apply across all the inputs please.

    Thanks!

    Continue reading...

Compartilhe esta Página