Python实战计划学习笔记(15)7日发帖量图表呈现作业

心得

  • charts图表采用固定格式输入,只要把options设好,series数据列表摆好,就能画出图表(目前主要看到了柱图和折线图两种形式)
  • 横轴按时间展现时,要用一个函数输出所有单个日期元素,此时会用到datetime库

我的代码

import pymongo
import charts
from datetime import timedelta,date

client = pymongo.MongoClient('localhost',27017)
test = client['test']
item_info = test['sample']

#观察库中的数据分类规律
for i in item_info.find({},{'_id':0,'cates':1}).limit(300):
    print(i)

#给出起始日期,自动取7天日期的函数
def get_seven_dates(the_date):
    the_date = date(int(the_date.split('.')[0]),int(the_date.split('.')[1]),int(the_date.split('.')[2]))
    days = timedelta(days=1)
    for i in range(1,8,1):
        yield the_date.strftime('%Y.%m.%d')
        the_date = the_date + days

#给出起始日期和分类,自动取7日发帖量数据列表
def get_data_within(start_date,classes):
    for the_class in classes:
        the_class_day_posts = []
        for date in get_seven_dates(start_date):
            a = list(item_info.find({'pub_date':date,'cates':the_class}))
            #print('#'*20,date,the_class,len(a),'#'*20)
            each_day_posts = len(a)
            the_class_day_posts.append(each_day_posts)
        data = {
            'name':the_class,
            'data':the_class_day_posts,
            'type':'line'
        }
        yield data

#准备图表的选项
options = {
    'chart':{'zoomType':'xy'},
    'title': {'text':'七日分类发帖量统计'},
    'subtitle': {'text':'按时间和分类'},
    'xAxis' : {'categories':[i for i in get_seven_dates(start_date)]},
    'yAxis' : {'title': { 'text' : '数量'}}
}
#图表输入数据
series = [ i for i in get_data_within(start_date,['北京二手手机','北京二手笔记本','北京二手台式机/配件'])]
#画图表
charts.plot(series, show='inline', options = options )

运行结果

取2015年12月22日起1周:

Python实战计划学习笔记(15)7日发帖量图表呈现作业_第1张图片
1.jpg

取2015年12月29日起1周:

Python实战计划学习笔记(15)7日发帖量图表呈现作业_第2张图片
2.jpg

你可能感兴趣的:(Python实战计划学习笔记(15)7日发帖量图表呈现作业)