PyQtGraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于其在内部实现方式上,使用了高速计算的numpy信号处理库以及Qt的GraphicsView框架,因此它在大数据量的处理及快速显示方面有着天然的优势,非常适合于需要快速绘图更新、视频或实时交互性的操作场合,在数学、科学和工程领域都有着广泛的应用。

在这推荐下小编创建的Python学习交流群835017344,可以获取Python入门基础教程,送给每一位小伙伴,这里是小白聚集地,每天还会直播和大家交流分享经验哦,欢迎初学和进阶中的小伙伴。

K线图介绍

对于股票交易者来讲,K线图是弄清股票一段时间走势的一种最基本的图形工具,K线分为阳线和阴线,阳线和阴线都包含了开盘价、收盘价、最高价和最低价,一般K线如下图所示:

当收盘价大于开盘价时,称为阳线,在图形上一般用红色表示,反之,当收盘价低于开盘价时,称为阴线,在图形上一般用绿色表示。由于其形状颇似一根根蜡烛,K线图有时也叫做蜡烛图。

# -- coding: utf-8 --

Form implementation generated from reading ui file 'QWidget_plot.ui'

Created by: PyQt4 UI code generator 4.11.4

WARNING! All changes made in this file will be lost!

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

from PyQt4 import QtCore, QtGui

import datetime

import pyqtgraph as pg

import tushare as ts

try:

_fromUtf8 = QtCore.QString.fromUtf8

except AttributeError:

def _fromUtf8(s):

return s

try:

_encoding = QtGui.QApplication.UnicodeUTF8

def _translate(context, text, disambig):

return QtGui.QApplication.translate(context, text, disambig, _encoding)

except AttributeError:

def _translate(context, text, disambig):

return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):

def setupUi(self, MainWindow):

MainWindow.setObjectName(_fromUtf8("MainWindow"))

MainWindow.resize(800, 600)

self.centralwidget = QtGui.QWidget(MainWindow)

self.centralwidget.setObjectName(_fromUtf8("centralwidget"))

self.verticalLayout_2 = QtGui.QVBoxLayout(self.centralwidget)

self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout"))

self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))

self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)

MainWindow.setCentralWidget(self.centralwidget)

self.menubar = QtGui.QMenuBar(MainWindow)

self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 31))

self.menubar.setObjectName(_fromUtf8("menubar"))

MainWindow.setMenuBar(self.menubar)

self.drawChart = DrawChart(ktype='D')

self.verticalLayout_2.addWidget(self.drawChart.pyqtgraphDrawChart())

self.retranslateUi(MainWindow)

QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):

MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))

class DrawChart():

def init(self, code='sz50', start=str(datetime.date.today() - datetime.timedelta(days=200)), end=str(datetime.date.today() + datetime.timedelta(days=1)), ktype='D'):

self.code = code

self.start = start

self.end = end

self.ktype = ktype

self.data_list, self.t = self.getData()

def pyqtgraphDrawChart(self):

try:

self.item = CandlestickItem(self.data_list)

self.xdict = {0: str(self.hist_data.index[0]).replace('-', '/'), int((self.t + 1) / 2) - 1: str(self.hist_data.index[int((self.t + 1) / 2)]).replace('-', '/'), self.t - 1: str(self.hist_data.index[-1]).replace('-', '/')}

self.stringaxis = pg.AxisItem(orientation='bottom')

self.stringaxis.setTicks([self.xdict.items()])

self.plt = pg.PlotWidget(axisItems={'bottom': self.stringaxis}, enableMenu=False)

self.plt.addItem(self.item)

# self.plt.showGrid(x=True, y=True)

return self.plt

except:

return pg.PlotWidget()

def getData(self):

self.start = str(datetime.date.today() - datetime.timedelta(days=150))

self.end = str(datetime.date.today() + datetime.timedelta(days=1))

self.hist_data = ts.get_hist_data(self.code, self.start, self.end, self.ktype).sort_index()[-300:-1]

data_list = []

t = 0

for dates, row in self.hist_data.iterrows():

open, high, close, low, volume, price_change, p_change, ma5, ma10, ma20 = row[:10]

datas = (t, open, close, low, high, volume, price_change, p_change, ma5, ma10, ma20)

data_list.append(datas)

t += 1

return data_list, t

class CandlestickItem(pg.GraphicsObject):

def init(self, data):

pg.GraphicsObject.init(self)

self.data = data

self.generatePicture()

def generatePicture(self):

self.picture = QtGui.QPicture()

p = QtGui.QPainter(self.picture)

p.setPen(pg.mkPen('w'))

w = (self.data[1][0] - self.data[0][0]) / 3.

prema5 = 0

prema10 = 0

prema20 = 0

for (t, open, close, min, max, volume, price_change, p_change, ma5, ma10, ma20) in self.data:

if open > close:

p.setPen(pg.mkPen('g'))

p.setBrush(pg.mkBrush('g'))

else:

p.setPen(pg.mkPen('r'))

p.setBrush(pg.mkBrush('r'))

p.drawLine(QtCore.QPointF(t, min), QtCore.QPointF(t, max))

p.drawRect(QtCore.QRectF(t - w, open, w * 2, close - open))

if prema5 != 0:

p.setPen(pg.mkPen('w'))

p.setBrush(pg.mkBrush('w'))

p.drawLine(QtCore.QPointF(t-1, prema5), QtCore.QPointF(t, ma5))

prema5 = ma5

if prema10 != 0:

p.setPen(pg.mkPen('c'))

p.setBrush(pg.mkBrush('c'))

p.drawLine(QtCore.QPointF(t-1, prema10), QtCore.QPointF(t, ma10))

prema10 = ma10

if prema20 != 0:

p.setPen(pg.mkPen('m'))

p.setBrush(pg.mkBrush('m'))

p.drawLine(QtCore.QPointF(t-1, prema20), QtCore.QPointF(t, ma20))

prema20 = ma20

p.end()

def paint(self, p, *args):

p.drawPicture(0, 0, self.picture)

def boundingRect(self):

return QtCore.QRectF(self.picture.boundingRect())

if name == "main":

import sys

app = QtGui.QApplication(sys.argv)

MainWindow = QtGui.QMainWindow()

ui = Ui_MainWindow()

ui.setupUi(MainWindow)

MainWindow.show()

sys.exit(app.exec_())

运行效果如下:

image

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

python绘制k线图_Python使用PyQtGraph绘制股票行情K线图相关推荐

  1. python绘制k线图的步骤_Python使用PyQtGraph绘制股票行情K线图

    PyQtGraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于其在内部实现方式上,使用了高速计算的numpy信号处理库以及Qt的GraphicsView框架, ...

  2. android 股票 开发,Android版的股票行情K线图开发

    现在在手上的是一个证券资讯类型的app,其中有涉及到股票行情界面,行情中有K线图等,看到网上很多人在求这方面的资料,所以我特地写了一个demo在此处给大家分享一下. 下面是做出来的效果图: 这个 界面 ...

  3. android 股票行情界面,Android版的股票行情K线图开发

    转载请注明出住:http://blog.csdn.net/andywuchuanlong 现在在手上的是一个证券资讯类型的app,其中有涉及到股票行情界面,行情中有K线图等,看到网上很多人在求这方面的 ...

  4. android开发最新行情,Android版的股票行情K线图开发

    现在在手上的是一个证券资讯类型的app,其中有涉及到股票行情界面,行情中有K线图等,看到网上很多人在求这方面的资料,所以我特地写了一个demo在此处给大家分享一下. 下面是做出来的效果图: 背景图是利 ...

  5. python制作3d相册代码_Python使用matplotlib绘制3D图形(代码示例)

    本篇文章给大家带来的内容是关于Python使用matplotlib绘制3D图形(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 3D图形在数据分析.数据建模.图形和图像处理 ...

  6. python画k线图_Python使用matplotlib绘制k线图(去掉空白日期)

    原标题:Python使用matplotlib绘制k线图(去掉空白日期) 之前研究过使用 matplotlib.finance 中的 candlestick_ohlc() 方法绘制k线图,但是有个很无语 ...

  7. python matplotlib画折线图_python使用matplotlib绘制折线图教程

    matplotlib简介 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序 ...

  8. python绘制热图_python使用matplotlib绘制热图

    python常用的绘图库就是matplotlib,今天在给公司绘图时,偶然间发现matplotlib可以绘制热图,并且十分简洁,拿出来跟大家分享一下.(由于涉及到公司数据问题,这里采用随机数生成数据进 ...

  9. python生成热度图_Python - 场景热力图绘制[转]

    在做诸如人群密集度等可视化的时候,可能会考虑使用热力图,在Python中能很方便地绘制热力图. 以识别图片中的行人,并绘制热力图为例. 步骤1:首先识别图像中的人,得到bounding box的中心坐 ...

最新文章

  1. Linux中的chmod权限问题
  2. 空中网首创人周云帆任北京昌平区副区长
  3. Http请求url参数字符集
  4. 音视频同步(播放)原理
  5. Matplotlib从文件绘图时Y轴坐标不正确
  6. 大整数乘法c语言数组,很大的数相乘怎么办?
  7. html5支持多中浏览器写法,html5及css3对table表格高亮当前行列的多浏览器兼容写法...
  8. windows下的workon env
  9. Android音频框架笔记 - 上篇
  10. 爬虫:如何爬取国家行政区划代码
  11. Spring源码深度解析百度网盘下载
  12. 计算机三级考试 信息安全,计算机三级考试《信息安全技术》练习题及答案
  13. 计算机音量程序是哪个键,计算机键盘上的哪个键是音量
  14. HDU 6232 2017 哈尔滨 Confliction
  15. maven离线(offline)构建时无法找到本地依赖 Non-resolvable import POM: Cannot access nexus
  16. ios降级鸿蒙,ios14怎么降级13.6 苹果iOS14降级超详细教程
  17. 2022虎年头像框制作小程序源码带背景音乐+流量主功能
  18. Windows10安装Photoshop CC2018(PS)软件时关闭电脑防火墙
  19. 购买PG霜,请认准官方网站
  20. 软件测试丨Git分支管理实操,搞定在线合并和本地合并

热门文章

  1. 打造个人品牌的十大项目
  2. 【Linux】手把手教你搭建自己个人博客(boss版)
  3. jQuery简介及选择器
  4. 通过frp代理配合teamview使用局域网远程桌面
  5. 什么是跨站脚本 (XSS) 攻击?
  6. 服务器e4系列,Intel Xeon E系列服务器处理器
  7. 跨境电商供应链系统:轻松统筹管理进出口跨境电商系统
  8. 登录这个轮子,你还在造?
  9. C++ STL :vector动态数组可实现整体赋值
  10. 使用python处理wps表格_【使用Python操作XLS文件+wps中叫et+】 - #1