【问题标题】:How do I display a grouped graph using a CSV file如何使用 CSV 文件显示分组图
【发布时间】:2022-01-16 14:09:00
【问题描述】:

import pandas as pd
import plotly
import plotly.express as px
import plotly.io as pio

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

barchart = px.bar(
    data_frame = df,
    x = "Post-Lockdown Period (May - September)",
    y = "Post-Lockdown Period (May - September)",
    color = "Peak-Lockdown Period (March-May)",
    opacity = 0.9,
    orientation ="v",
    barmode = 'relative',
)
pio.show(barchart)

我希望 x 轴是不同的行为变量,对于每个行为变量,我希望有两个条形图,一个代表大流行高峰,一个代表大流行后。我也希望 y 轴只是每个的值

这是我目前的尝试,但没有出现图表。附上一张excel表格的CSV文件图片

【问题讨论】:

    标签: python pandas dataframe csv plotly


    【解决方案1】:

    在 plotly.express 中,您可以通过在参数 y 中传递要组合在一起的两个变量的列表来创建分组条形图。在您的情况下,您需要将参数y = ['Peak-Lockdown Period (March-May)','Post-Lockdown Period (May-September)'] 以及参数barmode = 'grouped' 传递给px.bar。我创建了一个示例 DataFrame 来说明:

    import pandas as pd
    import plotly.express as px
    import plotly.io as pio
    
    # df = pd.read_csv("final_spreadsheet.csv")
    
    ## create example DataFrame similar to yours
    df = pd.DataFrame({
        'Behavioral': list('ABCD'),
        'Peak-Lockdown Period (March-May)': [76.7,26.12,0,2.94],
        'Post-Lockdown Period (May-September)': [77.32,26.38,0,3.36]
    })
    
    
    barchart = px.bar(
        data_frame = df,
        x = 'Behavioral',
        y = ['Peak-Lockdown Period (March-May)','Post-Lockdown Period (May-September)'],
        # color = "Peak-Lockdown Period (March-May)",
        opacity = 0.9,
        orientation ="v",
        barmode = 'group',
    )
    
    pio.show(barchart)
    

    编辑:您可以使用 plotly.graph_objects 完成同样的事情:

    import plotly.graph_objects as go
    
    fig = go.Figure(data=[
        go.Bar(name='Peak-Lockdown Period (March-May)', x=df['Behavioral'].values, y=df['Peak-Lockdown Period (March-May)'].values),
        go.Bar(name='Post-Lockdown Period (May-September)', x=df['Behavioral'].values, y=df['Post-Lockdown Period (May-September)'].values),
    ])  
    

    【讨论】:

    • 我用我的数据框尝试了这个,但它给了我错误“ValueError:所有参数应该具有相同的长度。参数 y 的长度是 2,而先前处理的参数的长度 ['Behavioral变量'] 是 27"
    • 你运行的是什么版本的 plotly?我正在使用 v5.4.0
    • @William Shen 如果由于某种原因您在使用 plotly.express 运行我的代码时遇到问题,我已经使用 plotly.graph_objects 提供了一个答案,希望对您有用
    • 啊,谢谢,我发现了在锁定后期间(5 月至 9 月)我的代码中缺少空格的问题。您的回答很有帮助,非常感谢
    • 很高兴我的回答对您有所帮助 - 如果您愿意,请考虑 accepting it,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多