【问题标题】:Plotly line plot from two dictionaries从两个字典中绘制线图
【发布时间】:2021-02-17 22:35:54
【问题描述】:

我有两本词典:

days = {'a':[1,2,3], 'b':[3,4,5]}
vals = {'a':[10,20,30], 'b':[9,16,25]}

使用情节(理想情况下情节表达)我想要一个带有两条线的线图:第一行是days['a'] vs vals['a'],第二行是days['b'] vs vals['b']。当然在实践中我可能有更多的潜在线路。我不知道如何解决这个问题。我很高兴用这些数据制作一个数据框,但不确定最好的结构是什么。

谢谢!为一个菜鸟问题道歉。

【问题讨论】:

    标签: python plotly plotly-dash


    【解决方案1】:

    您可以尝试以下方法:

    import plotly.graph_objects as go
    
    # your data
    days = {'a':[1,2,3], 'b':[3,4,5]}
    vals = {'a':[10,20,30], 'b':[9,16,25]}
    
    # generate a plot for each dictionary key
    data = []
    for k in days.keys():
        plot = go.Scatter(x=days[k],
                          y=vals[k],
                          mode="lines",
                          name=k # label for the plot legend
                         ) 
        data.append(plot)
    
    # create a figure with all plots and display it
    fig = go.Figure(data=data)
    fig.show()
    

    这给出了:

    使用 Plotly Express:

    import plotly.express as px
    import pandas as pd
    
    days = {'a': [1, 2, 3], 'b': [3, 4, 5]}
    vals = {'a': [10, 20, 30], 'b': [9, 16, 25]}
    
    # build DataFrame
    df = pd.DataFrame(columns=["days", "vals", "label"])
    for k in days.keys():
        df = df.append(pd.DataFrame({
            "days": days[k],
            "vals": vals[k],
            "label": k
        }))
    
    fig = px.line(df, x="days", y="vals", color="label")
    fig.show()
    

    结果同上。

    【讨论】:

    • 哦,有趣。我不知道 plotly.graph_objects。是不是首选px?
    • 另外,我不确定这就是我想要的。这似乎是 days['a'] vs vals['a'] 和 days['b'] vs vals['b']?如有误解,请见谅。
    • 我看错了你的问题。我会在一秒钟内修复它。
    • 谢谢!!这非常有用。
    • 如果数据来自 DataFrame,Plotly express 非常方便,但在这种情况下,使用图形对象似乎很简单。
    猜你喜欢
    • 2021-04-12
    • 2020-10-17
    • 1970-01-01
    • 2014-02-07
    • 2018-04-17
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多