心得
- 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周:
1.jpg取2015年12月29日起1周:
2.jpg
网友评论