• Matplotlib图例


    折线图示例

    #!/usr/bin/python2.7
    
    import numpy as np
    from matplotlib import pyplot as plt
    from dbtools import raw_data
    from utils import moving_sum
    
    def moving_sum(array, window):
        if type(array) is not np.ndarray:
            raise TypeError('Expected one dimensional numpy array.')
    
        remainder = array.size % window
        if 0 != remainder:
            array = array[remainder:]
        array = array.reshape((array.size/window,window))
        sum_arr = np.sum(array,axis=1)
    
        return sum_arr
    
    def run():
        window = 3
        y_lst = raw_data('2018-08-03 00:00:00', length=3600*24)
        raw_arr = np.array(y_lst)
    
        sum_arr = moving_sum(raw_arr,window)
        res = np.true_divide(sum_arr[1:],sum_arr[:-1])
        
        threshold = 0.5
        upper = np.array([1+threshold]*res.size)
        lower = np.array([1-threshold]*res.size)
        
        plt.plot(upper,lw=1,color='red',label='Upper')
        plt.plot(res,lw=1,color='blue',label='Trend')
        plt.plot(lower,lw=1,color='red',label='Lower')
    
        r_idx = np.argwhere(np.abs(res-1) > 0.5)
        plt.plot(r_idx, res[r_idx], 'ro')
    
        plt.legend()
        plt.show()
    
        return (r_idx,res[r_idx])
    

    画布和子图

    import numpy as np
    import matplotlib.pyplot as plt
    
    fig = plt.figure(figsize=[10,8])
    ax1 = fig.add_subplot(2,1,1)
    x1 = np.linspace(0.1,10,99,endpoint = False)
    y1 = np.log(x1)
    ax1.plot(x1,y1)
    ax1.set_title('Logarithmic function')
    
    x2 = np.linspace(0, 5, num = 100)
    y2 = np.e**x2
    ax2 = fig.add_subplot(2,1,2)
    ax2.plot(x2,y2)
    ax2.set_title('Exponential function')
    
    plt.subplots_adjust(hspace =0.2)
    fig.show()
    

    柱状图

    import numpy as np
    import matplotlib.pyplot as plt
    
    data = [32,48,19,85]
    labels = ['Jan','Feb','Mar','Apr']
    
    plt.bar(np.arange(len(data)),data,color='lightgreen')
    plt.xticks(np.arange(len(data)),labels)
    plt.show()
    

    饼状图

    import numpy as np
    import matplotlib.pyplot as plt
    
    data = [35,47,13,5]
    labels = ['Bili','iQiYi','Tencent','YouKu']
    plt.pie(data,labels=labels,autopct="%.2f%%",explode=[0.1,0,0,0],shadow=True)
    plt.show()
    

    Matplotlib画正弦余弦曲线 

    K线图

    1 pip3.6 install https://github.com/matplotlib/mpl_finance/archive/master.zip
    2 
    3 from mpl_finance import candlestick_ochl
    matplotlib.finance has been deprecated
     1 # https://github.com/Gypsying/iPython/blob/master/601318.csv
     2 
     3 In [2]: import pandas as pd                                                                                                                                                                                                               
     4 
     5 In [3]: df = pd.read_csv('601318.csv', index_col='date', parse_dates=['date'])                                                                                                                                                            
     6 
     7 In [4]: df.head()                                                                                                                                                                                                                         
     8 Out[4]: 
     9             Unnamed: 0    open   close    high     low      volume    code
    10 date                                                                      
    11 2007-03-01           0  21.878  20.473  22.302  20.040  1977633.51  601318
    12 2007-03-02           1  20.565  20.307  20.758  20.075   425048.32  601318
    13 2007-03-05           2  20.119  19.419  20.202  19.047   419196.74  601318
    14 2007-03-06           3  19.253  19.800  20.128  19.143   297727.88  601318
    15 2007-03-07           4  19.817  20.338  20.522  19.651   287463.78  601318
    16 
    17 In [5]: from matplotlib.dates import date2num                                                                                                                                                                                             
    18 
    19 In [6]: df['time'] = date2num(df.index.to_pydatetime())                                                                                                                                                                                   
    20 
    21 In [7]: df.head()                                                                                                                                                                                                                         
    22 Out[7]: 
    23             Unnamed: 0    open   close    high     low      volume    code      time
    24 date                                                                                
    25 2007-03-01           0  21.878  20.473  22.302  20.040  1977633.51  601318  732736.0
    26 2007-03-02           1  20.565  20.307  20.758  20.075   425048.32  601318  732737.0
    27 2007-03-05           2  20.119  19.419  20.202  19.047   419196.74  601318  732740.0
    28 2007-03-06           3  19.253  19.800  20.128  19.143   297727.88  601318  732741.0
    29 2007-03-07           4  19.817  20.338  20.522  19.651   287463.78  601318  732742.0
    30 
    31 In [8]: df.shape                                                                                                                                                                                                                          
    32 Out[8]: (2563, 8)
    33 
    34 In [9]: df.size                                                                                                                                                                                                                           
    35 Out[9]: 20504
    36 
    37 In [10]: 2563*8                                                                                                                                                                                                                           
    38 Out[10]: 20504
    39 
    40 In [11]: 
    数据源
    import numpy as np
    import pandas as pd
    from matplotlib.dates import date2num
    from mpl_finance import candlestick_ochl
    
    # 构建 candlestick_ochl 的sequence of (time, open, close, high, low, ...)
    df = pd.read_csv('601318.csv', index_col='date', parse_dates=['date'])
    # time must be in float days format - see date2num
    df['time'] = date2num(df.index.to_pydatetime())
    # 原始数据比较多,截取一部分做展示
    df = df.iloc[:300,:]
    arr = df[['time','open','close','high','low']].values
    
    fig = plt.figure(figsize=[14,7])
    ax = fig.add_subplot(1,1,1)
    
    candlestick_ochl(ax,arr)
    
    plt.grid(True, which='major', c='gray', ls='-', lw=1, alpha=0.2)
    fig.show()
    

      

  • 相关阅读:
    小作业5
    小作业4
    Matplotlib基础
    Numpy学习笔记(下篇)
    Numpy学习笔记(上篇)
    机器学习的经典算法与应用
    opencv学习笔记D01
    Markdown新手入门
    python之生成器yeild
    pyinstaller打包.py程序为.exe操作指南
  • 原文地址:https://www.cnblogs.com/standby/p/9483351.html
Copyright © 2020-2023  润新知