我想以特定的几种方式在x轴上绘制日期,在y轴上绘制一天中的时间,然后绘制线条图或间隔(浮动条)图。
但是我与那个情节有一些区别,我无法使其正常工作。我实际上是在y轴上绘制日期和时间的图,所以当我只需要一天的时间时,它在y轴上压缩了几个月的时间戳。该示例在注释中声称:“ yaxis的基准日期可以是任何东西,因为信息在时间上”,但是我不明白他是如何“扔掉”基准日期信息的。
无论如何,我的需求是:
我想选择y轴的24小时制(00:00到24:00)或am / pm样式时间,该轴的刻度看起来像3:00 pm、11:00am等。我想是用FuncFormatter完成的。
对于间隔(时间范围),我不想使用误差线-线太细了。我想使用一个(浮动的)条形/柱形图。
我的数据是格式为‘2010-12-20 05:00:00’的日期时间字符串
谢谢你的帮助。
我认为您对matplotlib究竟如何在后台处理时间和日期感到有些困惑。
matplotlib中的所有日期时间都表示为简单浮点数。1天对应于1.0的差,日期是自1900年以来的天数(如果我没有记错的话,无论如何)。
因此,为了只绘制给定日期的时间,您需要使用% 1。
% 1
我将使用点,但是您可以轻松使用条形图。考虑使用bottom,如果你使用关键字参数plt.bar,使杆的底部将在您的时间间隔的开始时间开始(请记住第二个参数是 高度 了吧,不是其顶部的y值)。
bottom
plt.bar
例如:
import matplotlib.pyplot as plt import matplotlib as mpl import numpy as np import datetime as dt # Make a series of events 1 day apart x = mpl.dates.drange(dt.datetime(2009,10,1), dt.datetime(2010,1,15), dt.timedelta(days=1)) # Vary the datetimes so that they occur at random times # Remember, 1.0 is equivalent to 1 day in this case... x += np.random.random(x.size) # We can extract the time by using a modulo 1, and adding an arbitrary base date times = x % 1 + int(x[0]) # (The int is so the y-axis starts at midnight...) # I'm just plotting points here, but you could just as easily use a bar. fig = plt.figure() ax = fig.add_subplot(111) ax.plot_date(x, times, 'ro') ax.yaxis_date() fig.autofmt_xdate() plt.show()
希望能有所帮助!