Python 随时间变化的绘图总和
提供了使用matplotlib将日期时间列表(见下文)绘制为随时间累积计数的好方法:Python 随时间变化的绘图总和,python,datetime,matplotlib,plot,graph,Python,Datetime,Matplotlib,Plot,Graph,提供了使用matplotlib将日期时间列表(见下文)绘制为随时间累积计数的好方法: [ datetime.datetime(2015, 12, 22), datetime.datetime(2015, 12, 23), datetime.datetime(2015, 12, 23), # note duplicate entry (graph increases by 2) datetime.datetime(2015, 12, 24), datetim
[
datetime.datetime(2015, 12, 22),
datetime.datetime(2015, 12, 23),
datetime.datetime(2015, 12, 23), # note duplicate entry (graph increases by 2)
datetime.datetime(2015, 12, 24),
datetime.datetime(2015, 12, 25),
...
]
然而,我有一个新的数据集,其中每个条目都有一个关联的值(见下文)。如何将其绘制为累积?或者我只需要迭代数据并将其累积成x,y绘图对吗
[
(datetime.datetime(2015, 12, 22), 6), # graph increases by 6
(datetime.datetime(2015, 12, 23), 5),
(datetime.datetime(2015, 12, 23), 4), # graph increases by 9
(datetime.datetime(2015, 12, 24), 12),
(datetime.datetime(2015, 12, 25), 14),
]
您只需拆分
x
和y
轴,然后使用或累积y值。下面是一个例子:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime
import numpy as np
r = [(datetime.datetime(2015, 12, 22), 6), (datetime.datetime(2015, 12, 23), 5), (datetime.datetime(2015, 12, 23), 4), (datetime.datetime(2015, 12, 24), 12), (datetime.datetime(2015, 12, 25), 14)]
x, v = zip(*[(d[0], d[1]) for d in r]) # same as #x , v = [d[0] for d in r], [d[1] for d in r]
v = np.array(v).cumsum() # cumulative sum of y values
# now plot the results
fig, ax = plt.subplots(1)
ax.plot(x, v, '-o')
fig.autofmt_xdate()
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %d'))
ax.xaxis.set_major_locator(mdates.DayLocator())
plt.show()