在Python中忽略大于x分钟Matplotlib的时间间隔

在Python中忽略大于x分钟Matplotlib的时间间隔,python,matplotlib,time-series,graphing,timeserieschart,Python,Matplotlib,Time Series,Graphing,Timeserieschart,我在上午9:30到下午4点之间每隔5分钟获取一次数据。大多数时候,我只是绘制实时的日内数据。然而,有时我想要一个2天以上的历史视图。唯一的问题是,在下午4点和上午9:30,我只得到一条连接两个数据点的线。我希望这个差距消失。下面是我的代码和正在发生的事情的示例 fig = plt.figure() plt.ylabel('Bps') plt.xlabel('Date/Time') plt.title(ticker) ax = fig.add_subplot(111) myFmt = mdates

我在上午9:30到下午4点之间每隔5分钟获取一次数据。大多数时候,我只是绘制实时的日内数据。然而,有时我想要一个2天以上的历史视图。唯一的问题是,在下午4点和上午9:30,我只得到一条连接两个数据点的线。我希望这个差距消失。下面是我的代码和正在发生的事情的示例

fig = plt.figure()
plt.ylabel('Bps')
plt.xlabel('Date/Time')
plt.title(ticker)
ax = fig.add_subplot(111)
myFmt = mdates.DateFormatter('%m/%d %I:%M')
ax.xaxis.set_major_formatter(myFmt)
line, = ax.plot(data['Date_Time'],data['Y'],'b-')


我想将数据保留为时间序列,这样当我滚动它时,我可以看到确切的日期和时间。

因此,看起来您正在使用熊猫对象,这很有用。假设您已过滤掉
数据['Date\u time']
中下午4点到上午9点之间的任何时间,我将确保通过
数据重置索引。重置索引()
。您需要将该整数索引用作matplotlib实际用于绘制时间序列的引擎盖下索引。然后,您可以使用
plt.xticks()
手动更改记号标签本身,如中所示。总而言之,我希望它看起来像这样:

data = data.reset_index(drop=True) # just to remove that pesky column 

fig, ax = plt.subplots(1,1)
ax.plot(data.index, data['Y'])
plt.ylabel('Bps')
plt.xlabel('Date/Time')
plt.title(ticker)
plt.xticks(data.index, data['Date_Time'])

我注意到了你问题中的最后一句话,就在发布这篇文章之后。不幸的是,这个“解决方案”没有跟踪交互式图形中的“x”变量。也就是说,当时间轴标签调整到您的缩放时,您无法通过光标位置来知道时间,因此您必须从图形底部向上看。:/

可能不是最佳策略,但因为您只关注上午9点到下午4点,难道你不能从下午4点到上午9点的数据中过滤出来吗?这是一个时间序列图,所以matplotlib会自动填充其间。那不是我的数据,只是一条连接两点的线。哦,我明白了。可能有助于使直线及其对应的轴区域消失,但它可能不完全是您所追求的。如果您的数据间隔很近,你可以作弊并简单地使用积分:将
'b-'
更改为
'b.
'b.'不起作用…空间仍然存在。我使用了类似的方法,但确实希望能够跟踪x值作为日期时间。