Python Dash/Plotly 没有正确显示图表?

Python Dash/Plotly doesn't display graphs correctly?

我试图在比较时间序列中绘制我的数据,但是,我不断得到这样的图:

现在我的数据在 pandas DataFrame 中格式化为:

|   | Date                             | Name1          | Name2   | Name3 |
| 0 | Timestamp('2005-08-06 00:00:00') | 1.5            | NaN     | 3 |
| 1 | Timestamp('2003-09-07 00:00:00') | NaN            | 1.3     | 2 |
| 2 | Timestamp('2002-10-02 00:00:00') | 1.6            | NaN     | NaN |
| 3 | Timestamp('1996-11-02 00:00:00') | 1.6            | 1       | NaN |
| 4 | Timestamp('2005-10-02 00:00:00') | NaN            | NaN     | 1 |

我的绘制过程是这样的:

def order_names(d):
    d_ret = dict()
    for i in d.keys():
        x_coordinates = d[i].keys()
        y_coordinates = d[i].values()
        x,y = zip(*sorted(zip(x_coordinates, y_coordinates)))
        d_star = {xi : yi for xi, yi in zip(x,y)}
        d_ret[i] = d_star
    return d_ret

d = get_data() #d = {name : {datetime.datetime : value...} ...}
d = order_data(d)
df = pd.DataFrame(d)
df.reset_index(inplace = True)
df.rename(columns={"index": "date"},inplace = True)



app = dash.Dash(__name__)

app.layout = html.Div([
    dcc.Dropdown(
        id='name',
        options=[{"label": x, "value": x} 
                 for x in df.columns[1:]],
        multi=True,
        value='Name1',
    ),
    dcc.Graph(id="name-chart"),
])

@app.callback(
    Output("name-chart", "figure"), 
    [Input("name", "value")])
def display_time_series(name):
    fig = px.line(df, x='date', y=name, title = "Value vs. Time")
    return fig

而且我不明白为什么 dash/plotly 显示顶部图表的顺序不正确。

tl;dr:我正在尝试绘制多个时间序列,这些时间序列可能没有也可能没有匹配的日期

是你的数据乱了。当您缺少 x 轴值时会发生这种情况。

您可以尝试以下几种解决方案: python plotly time series handle missing dates corretly

并且: https://community.plotly.com/t/scatterplot-lines-unwanted-connecting/8729

您需要确保您的数据都基于同一个 x 轴,并且这个 x 轴必须正确排序。根据您的示例代码,我并不完全相信您正确地订购了数据框。您无法绘制 'may or may not have matching dates'.

的数据

另外,根据您似乎有多少缺失数据,我强烈建议您构建一个具有连接边的散点图。