美文网首页
Week3 hw3:Draw a Line Chart

Week3 hw3:Draw a Line Chart

作者: 快要没时间了 | 来源:发表于2016-06-02 23:34 被阅读0次

    Target

    Target

    Basic Moves

    First things first, we use these code to connect our mongoDB.

    import pymongo
    from datetime import date
    from datetime import timedelta
    import charts
    
    client = pymongo.MongoClient('localhost',27017)
    myDB = client['ganjiDB']
    myCollection = myDB['bjGanji']
    

    Then, we must find out how to get a item with the special category. So I get it form a key named cates. Its third element can tell us what type of itself. It worked like this below:

    Get the category

    Utility Functions

    # arg1: myday = date(2015,12,10)
    # arg2: ['北京二手笔记本','北京二手台式机/配件','北京二手手机']
    # return a type's number in the given date
    def get_day_post(aDate, iType):
        dateStr = aDate.strftime('%Y.%m.%d')
        count = 0
        for i in myCollection.find({'pub_date':dateStr},{'cates':1,'pub_date':1,'_id':0}).limit(50):
            if i['cates'][2] == iType:
                count += 1
                # print(i)
        return count
    
    # for i in date_generate(myday,3):
    # generate a Navigatable Series for days
    def date_generate(startDate, spendDay):
        delta = timedelta(days=1)
        while spendDay > 0:
            yield startDate
            spendDay -= 1
            startDate += delta
    
    # combine upper function together
    def series_generate(startDate,spendDay,iType):
        for eachType in iType:
            postList = []
            for eachDay in date_generate(startDate,spendDay):
                sPostCount = get_day_post(eachDay,eachType)
                postList.append(sPostCount)
            data = {
                'name':eachType,
                'data':postList,
                'type':'line'
            }
            yield data
    

    These functions is used for generating a series which will be use in highchart's Drawing. It's process is quiet simple, I use two for loop to get the exact number in the condition I need.
    The only thing need to add to my code Library is the Date Module. It's powerful and easy to learn when dealing with time or date class.

    Draw the chart

    As usual, we have to build the parameters first.

    startDate = date(2016,1,1)
    
    series = [i for i in series_generate(startDate,15,['北京二手笔记本','北京二手台式机/配件','北京二手手机'])]
    
    # make options for highchart
    options = {
        'chart':{'zoomType':'xy'},
        'title':{'text':'Line Chart'},
        'subtitle':{'text':'made by Jet'},
        'xAxis':{'categories':[i.strftime('%Y.%m.%d') for i in date_generate(startDate,15)]},
        'yAxis':{'title': {'text': 'PostNumber'}}
    }
    

    And then type in the magic word.

    charts.plot(series,show='inline',options=options)
    

    Bingo!


    How the Result looks like

    Result

    That's all. Thank u for your visiting.

    相关文章

      网友评论

          本文标题:Week3 hw3:Draw a Line Chart

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