Python 2.7 使用matplotlib和时间序列数据的意外打印行为

Python 2.7 使用matplotlib和时间序列数据的意外打印行为,python-2.7,time,matplotlib,pandas,time-series,Python 2.7,Time,Matplotlib,Pandas,Time Series,我想使用matlplotlib绘制时间序列的线形图,但是matplotlib不会绘制所有数据,除非我使用.plot\u date()或使用.plot()传递o作为标记的参数 如果使用.plot\u date或.plot()并使用“-”标记,则我的数据无法正确打印: 有人知道为什么会发生这种情况以及如何解决吗?我需要数据点与线连接 提前谢谢 以下是我当前的代码: import pandas as pd import matplotlib.pyplot as plt import dateutil

我想使用matlplotlib绘制时间序列的线形图,但是matplotlib不会绘制所有数据,除非我使用
.plot\u date()
或使用
.plot()
传递
o
作为标记的参数

如果使用
.plot\u 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()

我的数据在一个
数据框中
,索引是
datetime64

您的数据框中可能有很多
NaN
值。Matplotlib仅在连续(有效)数据点之间绘制一条线,并在
NaN
值处留有间隙

如果是这样的话,在打印之前删除
NaN
,应该可以做到这一点。例如:

dftmp = sve2_all['MeHg ng/l']['1993-01-18':'1997-05-02'].dropna()
plt.plot(dftmp.index, dftmp,'b-')

对于熊猫的
系列
,您可以按照@RutgerKassies建议的
ser.dropna()
。但是,这不适用于
DataFrame
s。对于数据帧,有人使用解决了这个问题。 或者您可以只
df.fillna(method='ffill')


确保正向填充符合数据模型的逻辑。

谢谢,这就是问题所在,您的解决方案解决了它!
sve2_all['MeHg ng/l ffill']= sve2_all['MeHg ng/l'].fillna(method='ffill')
sve2_all['MeHg ng/2 ffill']= sve2_all['MeHg ng/2'].fillna(method='ffill')
sve2_all[['MeHg ng/l ffill','MeHg ng/2 ffill']].plot()