从两个字典中绘制线图

Plotly line plot from two dictionaries

我有两本词典:

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

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

谢谢!为菜鸟问题道歉。

您可以尝试以下方法:

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()

结果同上