Python Matplotlib:绘制一段时间内的用户总数
我有一个用户注册数据库。对于每个用户,我都有注册日期 我想将该日期范围内的用户总数绘制为阶梯线图,线下的区域将被填充 我绘制这个图的第一个想法是,首先创建一个Numpy数组,在可能的日期范围内,每天都有0个值,然后循环所有日期并递增相应的数组项。然后,可以使用Python Matplotlib:绘制一段时间内的用户总数,python,matplotlib,Python,Matplotlib,我有一个用户注册数据库。对于每个用户,我都有注册日期 我想将该日期范围内的用户总数绘制为阶梯线图,线下的区域将被填充 我绘制这个图的第一个想法是,首先创建一个Numpy数组,在可能的日期范围内,每天都有0个值,然后循环所有日期并递增相应的数组项。然后,可以使用numpy.cumsum(y)绘制此图 结果是: 我的问题是: 我想有一种更简单的方法来实现我所做的,而不是手动填充x轴和y轴。有没有更简单的方法?如果有,它是如何工作的 如何用纯色填充线条下方的区域 如何在x轴上获取日期而不是数字
numpy.cumsum(y)
绘制此图
结果是:
我的问题是:
- 我想有一种更简单的方法来实现我所做的,而不是手动填充x轴和y轴。有没有更简单的方法?如果有,它是如何工作的
- 如何用纯色填充线条下方的区域
- 如何在x轴上获取日期而不是数字
- 我认为你所做的是得到
,x
<代码>np。cumsum是此作业的正确工具y
- 要在绘图下方填充,请签出。在曲线和x轴之间填充
- 要获取x轴上的日期,只需使用
而不是日期
。或者,尝试使用而不仅仅是x
绘图
- 我认为你所做的是得到
,x
<代码>np。cumsum是此作业的正确工具y
- 要在绘图下方填充,请签出。在曲线和x轴之间填充
- 要获取x轴上的日期,只需使用
而不是日期
。或者,尝试使用而不仅仅是x
绘图
datetime
对象进行打印<代码>绘图(日期,np.cumsum(y))应“正常工作”matplotlib将针对datetime
对象进行绘图<代码>绘图(日期,np.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()