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)

 

转载于:https://www.cnblogs.com/654321cc/p/8796056.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值