我有一个有用户注册的数据库。对于每个用户,我有注册日期。
我想把这个日期范围内的用户总数绘制成一个渐进式的线图,下面的区域正在被填充。
我绘制这幅图的第一个想法是,首先为可能的日期范围内的每一天创建一个具有0值的Numpy数组,然后循环遍历所有日期并增加相应的数组项。然后可以使用numpy.cumsum(y)绘制此图。
from django.contrib.auth import get_user_model
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.dates import date2num
# Get user join dates
User = get_user_model()
datetimes = User.objects.values_list('date_joined', flat=True) \
.order_by('date_joined')
dates = map(lambda d: d.date(), datetimes) # This is now a list of date objects
# Get some auxilliary values
min_date = date2num(dates[0])
max_date = date2num(dates[-1])
days = max_date - min_date + 1
# Initialize X and Y axes
x = np.arange(min_date, max_date + 1)
y = np.zeros(days)
# Iterate over dates, increase registration array
for date in dates:
index = int(date2num(date) - min_date)
y[index] += 1
# Plot
plt.plot(x, np.cumsum(y), drawstyle='steps-post')
plt.show()结果:

我对此提出的问题:
发布于 2013-09-26 21:09:32
x,y所做的一切很好。np.cumsum是这项工作的正确工具。dates而不是x。或者,尝试使用plot_date而不是只使用plot。https://stackoverflow.com/questions/19038655
复制相似问题