• python matplotlib以日期为x轴作图


    from datetime import datetime, date, timedelta
    import matplotlib.pyplot as plt
    import tushare as ts
    
    plt.rcParams['font.sans-serif'] = ['SimHei']  #显示中文
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    
    
    def get_riqi():
        count = 30
        i = 0
        today = date.today() #今天日期
        riqi_list=[]
        riqi_list.append(str(today))
        while(i<=count):
            i+=1
            riqi_list.append(str((today + timedelta(days=-i))))
        return riqi_list
    
    
    def count(Data):
        data_list = []
        sum_list = []
        for data in Data:
            sum = 0
            list = []
            for jiage in data:
                sum+=jiage
                list.append(jiage)
            sum_list.append(round(sum,2))
            data_list.append(list)
        return sum_list,data_list
    
    def get_juedui(Data):
        sum = 0
        data = []
        for i in Data[::-1]:
            sum += i
            data.append(sum)
        return data
    technology = {
        '海康威视':'002415',
        '中兴通讯':'000063',
        '科大讯飞':'002230',
        '立讯精密':'002475',
        '蓝思科技':'300433',
        '歌尔股份':'002241'
    }
    store = [technology]
    technology = []
    def get_data(store,riqi_list):
        count = 0
        for Stock_pool in store:
            count +=1
            for  stock in Stock_pool.values():
                data = ts.get_hist_data(stock,start=riqi_list[-1])
                if (count == 1):
                    technology.append(data.loc[:, 'p_change'])
    riqi_list = get_riqi()
    get_data(store,riqi_list)
    riqi_list = technology[0].index
    rili = []
    for riqi in riqi_list:
        rili.append(riqi[5:])
    sum2,data2 = count(technology)
    riqi_list = [datetime.strptime(d, '%m-%d').date() for d in rili]
    count = 0
    for i in data2:
        count+=1
        data = get_juedui(i)
        if(count==1):
         plt.plot(rili[::-1], data,label = '海康威视' )
        if(count==2):
         plt.plot(rili[::-1], data,label = '中兴通讯' )
        if(count==3):
         plt.plot(rili[::-1], data,label = '科大讯飞' )
        if(count==4):
         plt.plot(rili[::-1], data,label = '立讯精密' )
        if (count == 5):
         plt.plot(rili[::-1], data, label='蓝思科技')
        if (count == 6):
         plt.plot(rili[::-1], data, label='歌尔股份')
    plt.legend()
    plt.show()
  • 相关阅读:
    Java基础-IO流对象之字节流(Stream)
    Java基础-IO流对象之File类
    Java基础-集合的嵌套
    rsync命令的基本使用
    java基础-Map集合
    Java基础-Collection子接口之Set接口
    Java基础-Collection子接口之List接口
    Java基础-泛型
    Unity4.3 bug GetChild顺序错乱
    Windows系统上的.Net版本和.NETFramework的C#版本
  • 原文地址:https://www.cnblogs.com/-wenli/p/11908743.html
Copyright © 2020-2023  润新知