我正在嘗試使用 plotly/Dash 繪制一些時(shí)間序列數(shù)據(jù),但圖形將無法正確顯示,盡管 x 軸的類型為“datetime.date”、“datetime.datetime”或格式正確的字符串(沒有任何效果.. .)??赡苁箚栴}復(fù)雜化的是,我使用不同的函數(shù)生成了時(shí)間序列數(shù)據(jù),將其存儲(chǔ)到 dcc.Store 對(duì)象(作為 dict)中,然后將其轉(zhuǎn)換回 Dataframe ......但我不確定。我的代碼如下,但總結(jié)一下簡(jiǎn)單的行動(dòng)計(jì)劃:將資產(chǎn)的 Ticker 輸入到輸入框中,該輸入框會(huì)生成一個(gè)字典并存儲(chǔ)到 dcc.Store 中(我想重新使用這個(gè)時(shí)間序列,因此存儲(chǔ)它而不是一次又一次地重復(fù)外部Bloomberg調(diào)用)立即從 dcc.Store 檢索該字典,轉(zhuǎn)換回 Dataframe 并生成簡(jiǎn)單圖查看每個(gè)步驟生成的數(shù)據(jù)類型時(shí),我可以看到在使用 df.to_dict() 生成 dict 后,我有以下類型的數(shù)據(jù):{'Date': {0: datetime.date(2017, 1, 1), 1: datetime.date(2017, 2, 1), 2: datetime.date(2017, 3, 1), 3: datetime.date(2017, 4, 1),.. 28: datetime.date(2019, 5, 1)}, 'FD004': {0: 18890.3544, 1: 18296.9503, 2: 18667.1757,.. 28: 16697.2425}}然后在將此 dict 轉(zhuǎn)換回 Dataframe 之后,我有: Date FD0040 2017-01-01 18890.35441 2017-02-01 18296.95032 2017-03-01 18667.1757其中df ['日期']:0 2017-01-011 2017-02-012 2017-03-01..27 2019-04-0128 2019-05-01Name: Date, dtype: object但是然后我使用 to_datetime 或 astype('datetime64[ns]') 轉(zhuǎn)換它,這給了我“正確的”dtype:0 2017-01-011 2017-02-012 2017-03-01..27 2019-04-0128 2019-05-01Name: Date, dtype: datetime64[ns]事實(shí)上,在檢查生成的最終無花果時(shí),我看到 plotly 已將其識(shí)別為日期時(shí)間對(duì)象:<bound method BaseFigure.show of Figure({ 'data': [{'type': 'scatter', 'x': array([datetime.datetime(2017, 1, 1, 0, 0), datetime.datetime(2017, 2, 1, 0, 0), datetime.datetime(2017, 3, 1, 0, 0), . . . datetime.datetime(2019, 3, 1, 0, 0), datetime.datetime(2019, 4, 1, 0, 0), datetime.datetime(2019, 5, 1, 0, 0)], dtype=object), 'y': array([18890.3544, 18296.9503, 18667.1757, ... 13202.488 , 14463.2424, 15025.5053, 16697.2425])}], 'layout': {'template': '...'}})>但仍然......圖表顯示像意大利面條:
1 回答

明月笑刀無情
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
看起來日期并不是全部按遞增順序排序的,因此看起來像“意大利面條”(當(dāng)回到過去時(shí))。您的打印件顯示的數(shù)據(jù)看起來已排序,因此我不確定,但中心部分丟失,以檢查它們是否已排序運(yùn)行
np.all(np.sort(df['Date']) == df['Date'])
您可以對(duì)數(shù)據(jù)進(jìn)行排序(例如使用np.sort
and np.argsort
),或者如果您只對(duì)點(diǎn)而不是線感到滿意,請(qǐng)使用mode='markers'
散點(diǎn)圖(參見https://plot.ly/python/line-and-scatter/)。
添加回答
舉報(bào)
0/150
提交
取消