charts3

作者: 有苦向瓜诉说 | 来源:发表于2017-05-07 10:35 被阅读38次

    先进行charts饼状图的小测,如下,结果为正常饼状图

    import charts
    options = {
        'chart'   : {'zoomType':'xy'},
        'title'   : {'text': '发帖量统计'},
        'subtitle': {'text': '可视化统计图表'},
        }
    series =  [{
        'type': 'pie',
        'name': 'Browser share',
        'data':[
                ['北京二手家电', 8836],
                ['北京二手文体/户外/乐器', 5337],
                ['北京二手数码产品', 4405],
                ['北京二手服装/鞋帽/箱包', 4074],
                ['北京二手母婴/儿童用品', 3124],
                ['北京二手台式机/配件', 2863],
                ['北京二手图书/音像/软件', 2777],
                ['北京二手办公用品/设备', 2496],
                ['北京二手家具', 1903],
                ['北京二手美容/保健', 1838],
                ['北京二手手机', 1603],
                ['北京二手笔记本', 1174],
                ['北京二手设备', 1004],
                ['北京其他二手物品', 761],
                ['北京二手平板电脑', 724]
                ]
    
            }]
    charts.plot(series,show = 'inline',options = options)
    

    绘制前面数据库中的数据来找某一天交易的各类目物品的饼状图

    1. 使用了pymongo的pipeline模型,和aggregate函数
    pipeline = [
        {'$match':{'$and':[{'pub_date':'2015.12.24'},{'time':3}]}},#匹配,用了and方法
        {'$group':{'_id':'$price','counts':{'$sum':1}}}, #分组,并计数
        {'$sort' :{'counts':-1}},  #排序
        {'$limit':10}  #限制展示个数
    ]
    
    1. pymongo的数据可选择展示
         for i in item_info.find({},{'_id':0,'cates':1}).limit(300):
               print(i)  # 只展示cates的数据
    
    1. charts中的pie类型,见上
    2. 把json格式导入数据库,了解导入命令
    C:\Users\10201>mongoimport -d tongcheng -c sample F:\BaiduYunDownload\课程源码及作业参考答案\Plan-for-combating-master\week3\week3_homework\data_sample\sample.json
    2017-05-07T09:38:10.120+0800    connected to: localhost
    2017-05-07T09:38:13.094+0800    [####################....] tongcheng.sample     29.4MB/34.2MB (86.0%)
    2017-05-07T09:38:13.549+0800    [########################] tongcheng.sample     34.2MB/34.2MB (100.0%)
    2017-05-07T09:38:13.550+0800    imported 86850 documents
    

    写代码的过程,带注释

    import charts,pymongo
    
    client = pymongo.MongoClient('localhost',27017)
    tongcheng = client.tongcheng
    sample = tongcheng.sample
    
    '''
    for i in sample.find({},{'_id':0,'cates':1}).limit(300):  #按所需要的输出,第一个表示查询条件,第二个表示展示项目
        print(i)
    
    pipeline = [
        {'$match':{'$and':[{'pub_date':'2016-01-12'},{'look':'-'}]}},  #匹配
        {'$group':{'_id':'$price','counts':{'$sum':1}}},    #分组,按照price来分组,每有一个新的price就加1
        {'$sort':{'counts':-1}},    #排序,按照counts排序,-1表示逆序(从大到小),1表示顺序
        {'$limit':3}    #限制输出个数
    ]
    for i in sample.aggregate(pipeline):   #使用aggregate的管道来格式化输出数据
        print(i)
    '''
    '''
    pipeline = [
    {'$match':{'$and':[{'pub_date':'2016.01.11'},{'look':'-'}]}},  #look纯属没事找事,只是试一下 $and的用法
    {'$group':{'_id':{'$slice':['$cates',2,1]},'counts':{'$sum':1}}},  #使用切片分组,选取cates的跳过前两个,选择后一个,计数,注意各用法
    {'$sort' :{'counts':-1}}
    ]
    for i in sample.aggregate(pipeline):
        print(i)
    '''
    def gen_data(date):    #生成器,产生某一天的的各项数据
        pipeline = [
                {'$match':{'$and':[{'pub_date':date},{'look':'-'}]}},  #look纯属没事找事,只是试一下 $and的用法
                {'$group':{'_id':{'$slice':['$cates',2,1]},'counts':{'$sum':1}}},  #使用切片分组,选取cates的跳过前两个,选择后一个,计数,注意各用法
                {'$sort' :{'counts':-1}}
            ]
        for i in sample.aggregate(pipeline):
            yield [i['_id'][0],i['counts']]    #产生所需的数据类型,data中的各个列表
    
    #for i in gen_data('2016.01.10'): 
    #   print(i)
    
    options = {
        'chart'   : {'zoomType':'xy'},
        'title'   : {'text': '发帖量统计'},
        'subtitle': {'text': '2016.01.10二手物品在随后7天内,交易时长为1天的类目分布占比'},
        }
    series = {
        'type':'pie',
        'name':'pie charts',
        'data':[data for data in gen_data('2016.01.10')]   #列表的列表哈哈
    }
    charts.plot(series,show = 'inline',options = options)
    

    结果:

    图片.png

    相关文章

      网友评论

        本文标题:charts3

        本文链接:https://www.haomeiwen.com/subject/nflutxtx.html