zoukankan      html  css  js  c++  java
  • charts 画折线图

    主题:指定日期内,不同地区的发布信息的数量的变化曲线

      数据库是mongod

      数据是58同城的发布的信息  

     整体思路:

      1由于从数据库中拿到的数据,格式等方面并不一样能完全满足需求,需要对数据库中的数据进行整理

      2 更新数据库

      3 数据可视化

    出发点:

      从哪天开始,到哪天结束

      具体区域

    追求点:

      以上区域在 限定时间内的发帖变化。

     

    part1:拿到截止天和开始天之间的每一天。

      为什么把这个功能单独拿出来作为一个函数?

      because 后面生成图表是,横坐标是 每一天。

      所以,这样设计是有意义的。

      这里用到datetime模块中的date,timedelta,和strftime方法。

    def get_all_date(date1,date2):
        delta = timedelta(days=1)
        d1 = date(int(date1.split('-')[0]),int(date1.split('-')[1]),int(date1.split('-')[2]))
        d2 = date(int(date2.split('-')[0]),int(date2.split('-')[1]),int(date2.split('-')[2]))
        while d1<=d2:
            yield d1.strftime('%Y-%m-%d')
            d1 += delta

    part2:使用find函数查找指定数据

      

    def get_one_area_one_date(area,date1):
        return col.find({'area':area,'pub_date':date1}).count()

    实际上这个函数,可以用aggregate,$group,更简单,更迅速的实现。
    from datetime import date,timedelta
    
    def get_one_area_many_date(area,date1,date2):
        delta = timedelta(days=1)
        d1 = date(int(date1.split('-')[0]),int(date1.split('-')[1]),int(date1.split('-')[2]))
        d2 = date(int(date2.split('-')[0]),int(date2.split('-')[1]),int(date2.split('-')[2]))
        while d1<=d2:
            yield col.find({'area':area,'pub_date':d1.strftime('%Y-%m-%d')}).count()
            d1 += delta
    def get_many_area_many_date(areas,date1,date2):
        for area in areas:
            yield {'name':area,'data':[i for i in get_one_area_many_date(area,date1,date2)],'type':'line'}

    part3:   转化数据

    最终显示:

    import charts
    options = {
        'title':{
            'text':'发帖量统计'
        },
        'subtitle':{
            'text':'北京地区'
        },
        'chart':{
            'zoomType':'xy',
        },
        'xAxis':{
            'categories':[i for i in get_all_date('2015-11-01','2016-01-10') ]  #这便是用到的第一个函数,坐标值,每一天。是在这里。
        },
        'yAxis':{
            'title':{
                'text':'数量'
            }
        }
    }
    charts.plot(ll,show='inline',options=options)

  • 相关阅读:
    php输入输出
    CSS选择器(三)
    CSS选择器(二)
    CSS选择器(一)
    3.31课·········插入百度地图、视频、音频
    3.30课·········Marquee标签
    3.29课·········表单验证和事件
    3.27课·········悬浮动态分层导航与隐藏导航
    3.26课·········window.document对象
    3.25课·········JavaScript的DOM操作
  • 原文地址:https://www.cnblogs.com/654321cc/p/8796056.html
Copyright © 2011-2022 走看看