技术标签: python gui编程 qt 编码 pyside2 pyqt5
烛台图(Candlestick Chart)最常见的应用就是表示诸如股票交易当日成交价格幅度以及开盘及收盘价格的图表。QChart中提供类QCandlestickSeries, QCandlestickSet来实现绘制烛台图。
QCandlestickSeries类将数据表示为烛台样的图形。本类充当单个条目的容器。使用QBarCategoryAxis时,每个条目都绘制到自己的类别中。QDateTimeAxis和QValueAxis可以用来替代QBarCategoryAxis。在这种情况下,每个条目均根据其时间戳值绘制。
QCandlestickSeries常用函数:
QCandlestickSeries常用信号:
QCandlestickSet类表示烛台图中的单个烛台条目。需要五个值来创建烛台条目的图形表示形式:open,high,low,close和timestamp。可以在创建对象时设置,也可以使用setOpen(),setHigh(),setLow(),setClose()和setTimestamp()进行设置。
QCandlestickSet常用函数:
QCandlestickSet常用信号:
参考Qt样例代码,创建类CandlestickDataReader用于读取文本文件,并将其数据设置为QCandlestickSet项,添加到QCandlestickSeries中,然后将QCandlestickSeries对象设置到图表,使用图表视图显示出来。使用的数据文件acme_data.txt的数据如下图:
acme_data.txt
资源文件candlestickdata.qrc:
<RCC>
<qresource prefix="/">
<file alias="acme">acme_data.txt</file>
</qresource>
</RCC>
完整代码如下:
import sys
from PyQt5.QtCore import Qt, QIODevice, QTextStream, QFile, QDateTime
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
from PyQt5.QtChart import (QChartView, QChart, QCandlestickSeries, QCandlestickSet,
QBarCategoryAxis, QValueAxis)
import candlestickdata_rc
#读取文本数据
class CandlestickDataReader(QTextStream):
def __init__(self, device, parent = None):
super(CandlestickDataReader, self).__init__(parent)
self.setDevice(device)
def readFile(self, device):
self.setDevice(device)
#从文本路中读取一行交易数据
def readCandlestickSet(self):
line = self.readLine()
if line.startswith('#') or line=='':
return None
strList = line.split(' ')
if len(strList) != 5:
return None
timestamp = float(strList[0])
open = float(strList[1])
high = float(strList[2])
low = float(strList[3])
close = float(strList[4])
candlestickSet = QCandlestickSet(timestamp)
candlestickSet.setOpen(open)
candlestickSet.setHigh(high)
candlestickSet.setLow(low)
candlestickSet.setClose(close)
return candlestickSet
class DemoChartCandlestick(QMainWindow):
def __init__(self, parent=None):
super(DemoChartCandlestick, self).__init__(parent)
# 设置窗口标题
self.setWindowTitle('实战 Qt for Python: QChart样条曲线演示')
# 设置窗口大小
self.resize(600, 360)
self.createChart()
def createChart(self):
#烛台图
acmeSeries = QCandlestickSeries()
acmeSeries.setName('Acm Ltd')
acmeSeries.setIncreasingColor(QColor(Qt.green))
acmeSeries.setDecreasingColor(QColor(Qt.red))
acmeData = QFile(':acme')
if not acmeData.open(QIODevice.ReadOnly | QIODevice.Text):
QMessageBox.information(self, '读数据', '不合法的数据文件')
return
dataReader = CandlestickDataReader(acmeData)
categories = []
while not dataReader.atEnd():
csSet = dataReader.readCandlestickSet()
if not csSet is None:
acmeSeries.append(csSet)
categories.append(QDateTime.fromMSecsSinceEpoch(csSet.timestamp()).toString('dd'))
#创建图表
chart = QChart()
chart.addSeries(acmeSeries)
chart.setTitle('Acme 公司历史数据 (2015年7月)')
chart.setAnimationOptions(QChart.SeriesAnimations)
#坐标轴设置
chart.createDefaultAxes()
#横轴
axisX = chart.axes(Qt.Horizontal)[0]
axisX.setCategories(categories)
#调整纵坐标轴值的范围
axisY = chart.axes(Qt.Vertical)[0]
axisY.setMax(int(axisY.max() * 1.01))
axisY.setMin(int(axisY.min() * 0.99))
#图例位置
chart.legend().setVisible(True)
chart.legend().setAlignment(Qt.AlignBottom)
#图表视图
chartView = QChartView(chart)
chartView.setRenderHint(QPainter.Antialiasing)
self.setCentralWidget(chartView)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = DemoChartCandlestick()
window.show()
sys.exit(app.exec())
运行结果如下图:
QChart烛台图演示
文章浏览阅读130次。原文:REACTIVE APPS WITH MODEL-VIEW-INTENT - PART4 - INDEPENDENT UI COMPONENTS作者:Hannes Dorfmann译者:却把清梅嗅这篇博客中,我们将针对如何 如何构建独立组件 进行探讨,我将阐述为什么在我看来 父子关系会导致坏味道的代码,以及为何这种关系是没有意义的。有这样一个问题时不时涌现在我的脑海中—— MVI...
文章浏览阅读662次。https://blog.csdn.net/qq_32466233/article/details/81075288_池化层后特征图尺寸
文章浏览阅读3.3k次。一、问题说明我是用的是官方示例中的这个饼状图。结果在应用到项目中后发现利用axios请求到的数据无法渲染到页面中去。并且其中value值已经改变。二、解决办法用$set改变value的值,并且重新绘制一遍表格。$set是全局 Vue.set 的别名。$set用法:向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为..._vue echart初始化渲染过后无法重新渲染
文章浏览阅读6.6k次。1,参考文档: 青云蓝牙光盘V4.1\6.青云系列教程青风出品\3:BLE蓝牙应用篇\2.BLE实验第二节:蓝牙LED任务读写使用说明.pdf青云蓝牙光盘V4.1\6.青云系列教程青风出品\4:蓝牙原理详解手把手教你用蓝牙:蓝牙LED任务读写原理任务详解.pdf2,进入目录: 青云蓝牙光盘V4.1\5.青云测试代码\ 第三部分:BLE蓝牙实验\BLE实验3:按键蓝牙通知\B..._nrf51822例程
文章浏览阅读5.2k次。使用tortoiseGit工具一直出错,由于没有设置自动获取putty key这一项,从网上找了一个教程,现分享如下,以做参考:前半部分参考网上的例子:http://www.showerlee.com/archives/1300,但会出现“git did not exit cleanly (exit code 128)”错误1.在D盘新建一个目录,例如"D:\Git",并进入目录右键目录空白处选择...
文章浏览阅读1.9k次。发现使用uni-app获取UserInfo,结果使用微信官网栗子发现只弹出提示,没获取到值如下<button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="onGotUserInfo">获取用户信息</button>onGotUserInfo: function (e) { console.log(e) ..._component "pages/index/index" does not have a method "getuserinfo" to handle
文章浏览阅读287次。一、makestrans()格式: str.maketrans(intab,outtab);功能:用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。注:两个字符串的长度必须相同,为一一对应的关系。注:Python3.6中已经没有string.maketrans()了,取而代之的是内建函数:bytearray...._python maketrance
文章浏览阅读5.7k次,点赞9次,收藏14次。set集合的简介,它的特点和遍历方式。介绍了HashSet重复元素存储底层原理,LinkedHashSet,TreeSet排序方法,SortedSet获取集合值的方法_set集合
文章浏览阅读3.6k次,点赞3次,收藏29次。随着城市规模的不断扩大和现代化程度的日益提高,城市排水管网越来越复杂,一些城市相继发生大雨内涝、管线泄漏爆炸、路面塌陷等事件,严重影响了人民群众生命财产安全和城市运行秩序。因此,摸清排水管网设施资产家底、建立排水管网地理信息系统,用现代化的技术手段对排水系统进行科学管理显得迫在眉睫。以时空信息为基础,充分利用感知监测网、物联网、云计算、移动互联网、工业控制和水力模型等新一代信息技术,全方位感..._污水处理智慧管理系统案列
文章浏览阅读5.7k次,点赞4次,收藏13次。上篇在详解FAT32文件系统中介绍了FAT32文件系统存储数据的原理,这篇就来介绍下NTFS文件系统。NTFS、用过Windows系统的人都知道,它是一个很强大的文件系统,支持的功能很多,存储的原理也很复杂。目前绝大多数Windows用户都是使用NTFS文件系统,它主要以安全性和稳定性而闻名,下面是它的一些主要特点。安全性高:NTFS支持基于文件或目录的ACL,并且支持加密文件系统(E_ntfs文件系统中,磁盘上的所有数据包括源文件都是以什么的形式存储
文章浏览阅读1.2k次。pytorch之常用Loss函数总结参考文档L1、L2、smooth L1 Losssoftmax_cross_entropy_with_logitssparse_softmax_cross_entropy_with_logitsbinary_cross_entropysigmoid_cross_entropy参考文档参考文档参考文档L1、L2、smooth L1 Losssoftmax..._smooth_l1_loss公式
文章浏览阅读462次。1017 A除以B (20 分)本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。输入格式:输入在一行中依次给出 A 和 B,中间以 1 空格分隔。输出格式:在一行中依次输出 Q 和 R,中间以 1 空格分隔。输入样例:123456789050987654321 7输出样例:17636..._pat 1017乙