在 python 中绘制日期时间直方图,条形大小作为 hours/minutes 的数量
Plot datetime histogram in python with bar size as number of hours/minutes
我想在 python 中编写一个代码,该代码绘制一个日期时间直方图,将条形大小作为小时数。
我尝试了一些代码,但它显示的结果不正确。我在 bin 大小上犯了一些错误我不明白。
numtime = [date2num(t) for t in x]
# plotting the histogram
ax = figure().gca()
_, _, patches = hist(numtime, bins=24,alpha=.5)
# adding the labels for the x axis
tks = [num2date(p.get_x()) for p in patches]
xticks(tks,rotation=40)
# formatting the dates on the x axis
ax.xaxis.set_major_formatter(DateFormatter('%d %b %H:%M'))
show()
x is <type 'numpy.ndarray'> of datetime
刚开始学习python。有人可以帮忙吗?
用于复制的 x 值很少:
[datetime.datetime(2015, 6, 26, 1, 36)
datetime.datetime(2015, 6, 26, 1, 31)
datetime.datetime(2015, 6, 26, 0, 36)
datetime.datetime(2015, 6, 25, 16, 43)
datetime.datetime(2015, 6, 25, 16, 30)
datetime.datetime(2015, 6, 21, 4, 0)
datetime.datetime(2015, 6, 19, 17, 2)
datetime.datetime(2015, 6, 19, 16, 56)
datetime.datetime(2015, 6, 19, 15, 2)
datetime.datetime(2015, 6, 19, 0, 30)
datetime.datetime(2015, 6, 1, 21, 34)
datetime.datetime(2015, 5, 25, 22, 49)
datetime.datetime(2015, 5, 21, 23, 35)
datetime.datetime(2015, 4, 22, 4, 20)
datetime.datetime(2015, 1, 23, 17, 31)
datetime.datetime(2015, 1, 23, 12, 23)
datetime.datetime(2015, 1, 23, 9, 53)
datetime.datetime(2015, 1, 23, 9, 29)
datetime.datetime(2015, 1, 23, 8, 42)
datetime.datetime(2015, 1, 23, 4, 36)
datetime.datetime(2015, 1, 23, 1, 45)
datetime.datetime(2015, 1, 22, 22, 59)
datetime.datetime(2015, 1, 22, 20, 34)
datetime.datetime(2015, 1, 22, 20, 4)
datetime.datetime(2015, 1, 22, 20, 0)
datetime.datetime(2015, 1, 22, 19, 34)
datetime.datetime(2015, 1, 22, 19, 16)
datetime.datetime(2015, 1, 22, 15, 48)
datetime.datetime(2015, 1, 22, 13, 31)]
]
总结我上面的评论:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.dates import num2date
# interval width
nhours = 24
# convert datetime instances in `x` to hours since reference date
numtime = date2num(x)/24.
# bins for histogram
bins = np.arange(numtime.min(), numtime.max()+1, nhours)
# plotting the histogram
fig, ax = plt.subplots()
ax.hist(numtime, bins=bins, alpha=.5)
# label the ticks somehow
# ...
我想在 python 中编写一个代码,该代码绘制一个日期时间直方图,将条形大小作为小时数。
我尝试了一些代码,但它显示的结果不正确。我在 bin 大小上犯了一些错误我不明白。
numtime = [date2num(t) for t in x]
# plotting the histogram
ax = figure().gca()
_, _, patches = hist(numtime, bins=24,alpha=.5)
# adding the labels for the x axis
tks = [num2date(p.get_x()) for p in patches]
xticks(tks,rotation=40)
# formatting the dates on the x axis
ax.xaxis.set_major_formatter(DateFormatter('%d %b %H:%M'))
show()
x is <type 'numpy.ndarray'> of datetime
刚开始学习python。有人可以帮忙吗?
用于复制的 x 值很少:
[datetime.datetime(2015, 6, 26, 1, 36)
datetime.datetime(2015, 6, 26, 1, 31)
datetime.datetime(2015, 6, 26, 0, 36)
datetime.datetime(2015, 6, 25, 16, 43)
datetime.datetime(2015, 6, 25, 16, 30)
datetime.datetime(2015, 6, 21, 4, 0)
datetime.datetime(2015, 6, 19, 17, 2)
datetime.datetime(2015, 6, 19, 16, 56)
datetime.datetime(2015, 6, 19, 15, 2)
datetime.datetime(2015, 6, 19, 0, 30)
datetime.datetime(2015, 6, 1, 21, 34)
datetime.datetime(2015, 5, 25, 22, 49)
datetime.datetime(2015, 5, 21, 23, 35)
datetime.datetime(2015, 4, 22, 4, 20)
datetime.datetime(2015, 1, 23, 17, 31)
datetime.datetime(2015, 1, 23, 12, 23)
datetime.datetime(2015, 1, 23, 9, 53)
datetime.datetime(2015, 1, 23, 9, 29)
datetime.datetime(2015, 1, 23, 8, 42)
datetime.datetime(2015, 1, 23, 4, 36)
datetime.datetime(2015, 1, 23, 1, 45)
datetime.datetime(2015, 1, 22, 22, 59)
datetime.datetime(2015, 1, 22, 20, 34)
datetime.datetime(2015, 1, 22, 20, 4)
datetime.datetime(2015, 1, 22, 20, 0)
datetime.datetime(2015, 1, 22, 19, 34)
datetime.datetime(2015, 1, 22, 19, 16)
datetime.datetime(2015, 1, 22, 15, 48)
datetime.datetime(2015, 1, 22, 13, 31)]
]
总结我上面的评论:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.dates import num2date
# interval width
nhours = 24
# convert datetime instances in `x` to hours since reference date
numtime = date2num(x)/24.
# bins for histogram
bins = np.arange(numtime.min(), numtime.max()+1, nhours)
# plotting the histogram
fig, ax = plt.subplots()
ax.hist(numtime, bins=bins, alpha=.5)
# label the ticks somehow
# ...