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()

 

 

 

 

 

  

 

posted @ 2018-08-15 18:59  青山应回首  阅读(497)  评论(0编辑  收藏  举报