我想使用matlplotlib绘制时间序列的折线图,但matplotlib不会绘制我的所有数据,除非我使用.plot_date()
或使用.plot()
传递o
作为标记的论据。
如果我使用.plot_date
或.plot()
并使用' - '标记,则我的数据无法正确绘制:
有人知道为什么会这样,以及如何解决这个问题?我需要数据点与线连接。
提前致谢。
这是我目前的代码:
import pandas as pd
import matplotlib.pyplot as plt
import dateutil
from datetime import date, datetime, timedelta
plt.plot(sve2_all['MeHg ng/l']['1993-01-18':'1997-05-02'].index, sve2_all['MeHg ng/l']['1993-01-18':'1997-05-02'],'bo')
plt.xticks(rotation=70)
plt.show()
我的数据位于Pandas DataFrame
中,索引为datetime64
。
答案 0 :(得分:1)
您的Dataframe中可能有很多NaN
个值。 Matplotlib仅在连续(有效)数据点之间绘制一条线,并在NaN
值处留下间隙。
如果是这种情况,在绘图之前删除NaN
应该可以解决问题。例如:
dftmp = sve2_all['MeHg ng/l']['1993-01-18':'1997-05-02'].dropna()
plt.plot(dftmp.index, dftmp,'b-')
答案 1 :(得分:0)
对于Pandas的Series
,您可以{@ 1}} @RutgerKassies建议。但是这不适用于ser.dropna()
。对于DataFrame,有人使用masks解决了该问题。
或者你可以DataFrame
:
df.fillna(method='ffill')
确保前向填充符合您的数据模型。