Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib:绘制一段时间内的用户总数_Python_Matplotlib - Fatal编程技术网

Python Matplotlib:绘制一段时间内的用户总数

Python Matplotlib:绘制一段时间内的用户总数,python,matplotlib,Python,Matplotlib,我有一个用户注册数据库。对于每个用户,我都有注册日期 我想将该日期范围内的用户总数绘制为阶梯线图,线下的区域将被填充 我绘制这个图的第一个想法是,首先创建一个Numpy数组,在可能的日期范围内,每天都有0个值,然后循环所有日期并递增相应的数组项。然后,可以使用numpy.cumsum(y)绘制此图 结果是: 我的问题是: 我想有一种更简单的方法来实现我所做的,而不是手动填充x轴和y轴。有没有更简单的方法?如果有,它是如何工作的 如何用纯色填充线条下方的区域 如何在x轴上获取日期而不是数字

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

我想将该日期范围内的用户总数绘制为阶梯线图,线下的区域将被填充

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

结果是:

我的问题是:

  • 我想有一种更简单的方法来实现我所做的,而不是手动填充x轴和y轴。有没有更简单的方法?如果有,它是如何工作的
  • 如何用纯色填充线条下方的区域
  • 如何在x轴上获取日期而不是数字
      • 我认为你所做的是得到
        x
        y
        <代码>np。cumsum是此作业的正确工具

      • 要在绘图下方填充,请签出。在曲线和x轴之间填充

      • 要获取x轴上的日期,只需使用
        日期
        而不是
        x
        。或者,尝试使用而不仅仅是
        绘图

          • 我认为你所做的是得到
            x
            y
            <代码>np。cumsum是此作业的正确工具

          • 要在绘图下方填充,请签出。在曲线和x轴之间填充

          • 要获取x轴上的日期,只需使用
            日期
            而不是
            x
            。或者,尝试使用而不仅仅是
            绘图


          matplotlib将针对
          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()