经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » NumPy » 查看文章
利用python numpy+matplotlib绘制股票k线图的方法
来源:jb51  时间:2019/6/26 12:46:06  对本文有异议

一、python numpy + matplotlib 画股票k线图

  1. # -- coding: utf-8 --
  2. import requests
  3. import numpy as np
  4. from matplotlib import pyplot as plt
  5. from matplotlib import animation
  6. fig = plt.figure(figsize=(8,6), dpi=72,facecolor="white")
  7. axes = plt.subplot(111)
  8. axes.set_title('Shangzheng')
  9. axes.set_xlabel('time')
  10. line, = axes.plot([], [], linewidth=1.5, linestyle='-')
  11. alldata = []
  12. def dapan(code):
  13. url = 'http://hq.sinajs.cn/?list='+code
  14. r = requests.get(url)
  15. data = r.content[21:-3].decode('gbk').encode('utf8').split(',')
  16. alldata.append(data[3])
  17. axes.set_ylim(float(data[5]), float(data[4]))
  18. return alldata
  19. def init():
  20. line.set_data([], [])
  21. return line
  22. def animate(i):
  23. axes.set_xlim(0, i+10)
  24. x = range(i+1)
  25. y = dapan('sh000001')
  26. line.set_data(x, y)
  27. return line
  28. anim=animation.FuncAnimation(fig, animate, init_func=init, frames=10000, interval=5000)
  29. plt.show()

二、使用matplotlib轻松绘制股票K线图

K线图是看懂股票走势的最基本知识,K线分为阴线和阳线,阴线和阳线都包含了最低价、开盘价、最高价和收盘价,一般都K线如下图所示:


在使用Python进行股票分析的过程中,我们可以很容易的对K线图进行绘制,下面介绍两种情形下的K线图绘制:

1. 股票数据来源于Matplotlib:

  1. # 导入需要的库
  2. import tushare as ts
  3. import matplotlib.pyplot as plt
  4. import matplotlib.finance as mpf
  5. %matplotlib inline
  6. # 设置历史数据区间
  7. date1 = (2014, 12, 1) # 起始日期,格式:(年,月,日)元组
  8. date2 = (2016, 12, 1) # 结束日期,格式:(年,月,日)元组
  9. # 从雅虎财经中获取股票代码601558的历史行情
  10. quotes = mpf.quotes_historical_yahoo_ohlc('601558.ss', date1, date2)
  11. # 创建一个子图
  12. fig, ax = plt.subplots(facecolor=(0.5, 0.5, 0.5))
  13. fig.subplots_adjust(bottom=0.2)
  14. # 设置X轴刻度为日期时间
  15. ax.xaxis_date()
  16. # X轴刻度文字倾斜45度
  17. plt.xticks(rotation=45)
  18. plt.title("股票代码:601558两年K线图")
  19. plt.xlabel("时间")
  20. plt.ylabel("股价(元)")
  21. mpf.candlestick_ohlc(ax,quotes,width=1.2,colorup='r',colordown='green')
  22. plt.grid(True)

绘制出来的K线图如下:


2.股票数据来源于Tushare:

因为从Tushare中获取到的数据为Pandas的DataFrame结构,需要将其转换为matplotlib.finance.candlestick_ohlc()方法能够处理的数据结构。

  1. from matplotlib.pylab import date2num
  2. import datetime
  3. # 对tushare获取到的数据转换成candlestick_ohlc()方法可读取的格式
  4. data_list = []
  5. for dates,row in hist_data.iterrows():
  6. # 将时间转换为数字
  7. date_time = datetime.datetime.strptime(dates,'%Y-%m-%d')
  8. t = date2num(date_time)
  9. open,high,low,close = row[:4]
  10. datas = (t,open,high,low,close)
  11. data_list.append(datas)
  12. # 创建子图
  13. fig, ax = plt.subplots()
  14. fig.subplots_adjust(bottom=0.2)
  15. # 设置X轴刻度为日期时间
  16. ax.xaxis_date()
  17. plt.xticks(rotation=45)
  18. plt.yticks()
  19. plt.title("股票代码:601558两年K线图")
  20. plt.xlabel("时间")
  21. plt.ylabel("股价(元)")
  22. mpf.candlestick_ohlc(ax,data_list,width=1.5,colorup='r',colordown='green')
  23. plt.grid()

同样也能绘制会一样的K线图:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号