首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matplotlib:随时间增长的用户总数

Matplotlib:随时间增长的用户总数
EN

Stack Overflow用户
提问于 2013-09-26 21:04:03
回答 1查看 628关注 0票数 0

我有一个有用户注册的数据库。对于每个用户,我有注册日期。

我想把这个日期范围内的用户总数绘制成一个渐进式的线图,下面的区域正在被填充。

我绘制这幅图的第一个想法是,首先为可能的日期范围内的每一天创建一个具有0值的Numpy数组,然后循环遍历所有日期并增加相应的数组项。然后可以使用numpy.cumsum(y)绘制此图。

代码语言:javascript
复制
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()

结果:

我对此提出的问题:

  • 我怀疑有一种更简单的方法来实现我所做的事情,而不是手动填充x和y轴。有没有更简单的方法,如果是的话,它是如何工作的?
  • 如何用纯色填充线下的区域?
  • 我怎样才能得到日期而不是x轴上的数字?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-26 21:09:32

  • 我认为你为了得到xy所做的一切很好。np.cumsum是这项工作的正确工具。
  • 要填写下面的图,请查看在两者之间。在曲线和x轴之间填充.
  • 要获取x轴上的日期,只需使用dates而不是x。或者,尝试使用plot_date而不是只使用plot
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19038655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档