利用python numpy+matplotlib繪制股票k線圖的方法
一、python numpy + matplotlib 畫股票k線圖
# -- coding: utf-8 --
import requests
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
fig = plt.figure(figsize=(8,6), dpi=72,facecolor="white")
axes = plt.subplot(111)
axes.set_title('Shangzheng')
axes.set_xlabel('time')
line, = axes.plot([], [], linewidth=1.5, linestyle='-')
alldata = []
def dapan(code):
url = 'http://hq.sinajs.cn/?list='+code
r = requests.get(url)
data = r.content[21:-3].decode('gbk').encode('utf8').split(',')
alldata.append(data[3])
axes.set_ylim(float(data[5]), float(data[4]))
return alldata
def init():
line.set_data([], [])
return line
def animate(i):
axes.set_xlim(0, i+10)
x = range(i+1)
y = dapan('sh000001')
line.set_data(x, y)
return line
anim=animation.FuncAnimation(fig, animate, init_func=init, frames=10000, interval=5000)
plt.show()
二、使用matplotlib輕松繪制股票K線圖
K線圖是看懂股票走勢(shì)的最基本知識(shí),K線分為陰線和陽(yáng)線,陰線和陽(yáng)線都包含了最低價(jià)、開盤價(jià)、最高價(jià)和收盤價(jià),一般都K線如下圖所示:

在使用Python進(jìn)行股票分析的過程中,我們可以很容易的對(duì)K線圖進(jìn)行繪制,下面介紹兩種情形下的K線圖繪制:
1. 股票數(shù)據(jù)來源于Matplotlib:
# 導(dǎo)入需要的庫(kù)
import tushare as ts
import matplotlib.pyplot as plt
import matplotlib.finance as mpf
%matplotlib inline
# 設(shè)置歷史數(shù)據(jù)區(qū)間
date1 = (2014, 12, 1) # 起始日期,格式:(年,月,日)元組
date2 = (2016, 12, 1) # 結(jié)束日期,格式:(年,月,日)元組
# 從雅虎財(cái)經(jīng)中獲取股票代碼601558的歷史行情
quotes = mpf.quotes_historical_yahoo_ohlc('601558.ss', date1, date2)
# 創(chuàng)建一個(gè)子圖
fig, ax = plt.subplots(facecolor=(0.5, 0.5, 0.5))
fig.subplots_adjust(bottom=0.2)
# 設(shè)置X軸刻度為日期時(shí)間
ax.xaxis_date()
# X軸刻度文字傾斜45度
plt.xticks(rotation=45)
plt.title("股票代碼:601558兩年K線圖")
plt.xlabel("時(shí)間")
plt.ylabel("股價(jià)(元)")
mpf.candlestick_ohlc(ax,quotes,width=1.2,colorup='r',colordown='green')
plt.grid(True)
繪制出來的K線圖如下:

2.股票數(shù)據(jù)來源于Tushare:
因?yàn)閺腡ushare中獲取到的數(shù)據(jù)為Pandas的DataFrame結(jié)構(gòu),需要將其轉(zhuǎn)換為matplotlib.finance.candlestick_ohlc()方法能夠處理的數(shù)據(jù)結(jié)構(gòu)。
from matplotlib.pylab import date2num
import datetime
# 對(duì)tushare獲取到的數(shù)據(jù)轉(zhuǎn)換成candlestick_ohlc()方法可讀取的格式
data_list = []
for dates,row in hist_data.iterrows():
# 將時(shí)間轉(zhuǎn)換為數(shù)字
date_time = datetime.datetime.strptime(dates,'%Y-%m-%d')
t = date2num(date_time)
open,high,low,close = row[:4]
datas = (t,open,high,low,close)
data_list.append(datas)
# 創(chuàng)建子圖
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
# 設(shè)置X軸刻度為日期時(shí)間
ax.xaxis_date()
plt.xticks(rotation=45)
plt.yticks()
plt.title("股票代碼:601558兩年K線圖")
plt.xlabel("時(shí)間")
plt.ylabel("股價(jià)(元)")
mpf.candlestick_ohlc(ax,data_list,width=1.5,colorup='r',colordown='green')
plt.grid()
同樣也能繪制會(huì)一樣的K線圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python設(shè)計(jì)模式之觀察者模式簡(jiǎn)單示例
這篇文章主要介紹了Python設(shè)計(jì)模式之觀察者模式,簡(jiǎn)單描述了觀察者模式的概念、原理,并結(jié)合實(shí)例形式分析了Python觀察者模式的相關(guān)定義與使用技巧,需要的朋友可以參考下2018-01-01
python實(shí)現(xiàn)字符串加密 生成唯一固定長(zhǎng)度字符串
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)字符串加密,生成唯一固定長(zhǎng)度字符串,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03

