当前位置: 首页 > wzjs >正文

商务网站建设与维护(专21春)dw做网站一般是多大的尺寸

商务网站建设与维护(专21春),dw做网站一般是多大的尺寸,男生可以做网站编辑工作吗,网网站设计网目录 前置: 代码 演示 视频 前置: 1 pyqtgraph默认的缩放功能经常让K线不消失在可视区域,与通达信等软件的缩放体验差别巨大 2 pyqtgraph的缩放策略是以鼠标所在位置为中心进行x轴和y轴的缩放。当鼠标所在位置偏离K线主体很远时&#x…

目录

前置:

代码

演示

视频


前置:

1 pyqtgraph默认的缩放功能经常让K线不消失在可视区域,与通达信等软件的缩放体验差别巨大

2 pyqtgraph的缩放策略是以鼠标所在位置为中心进行x轴和y轴的缩放。当鼠标所在位置偏离K线主体很远时,K线主体经常消失,或者K线显示不全

3 修改思想,不管放大还是缩小,计算缩放后K线主体的x轴y轴范围,将缩放后的可视区域设置为缩放后K线主体的x轴和y轴范围,这样就能保证可视区域内总是完整的K线图。

4 在 pyqtgraph 里面,鼠标滚轮事件wheelEvent有一个delta可以表征滚轮的向上和向下
向上,放大,delta大于1,显示的内容减少(显示的K线个数减少)
向下,缩小,delta小于1,显示的内容增多(显示的K线个数增多)
根据以上逻辑,重写pg.PlotWidget()里面的wheelEvent

代码

from PyQt6.QtCore import (
QSize
)
from PyQt6.QtWidgets import (
QApplication,
QMainWindow,
QVBoxLayout,
QWidget
)
import pyqtgraph as pg
from pyqtgraph import QtCore, QtGui
import pandas as pd
import numpy as np## Create a subclass of GraphicsObject.
## The only required methods are paint() and boundingRect()
## (see QGraphicsItem documentation)
class CandlestickItem(pg.GraphicsObject):def __init__(self, data):pg.GraphicsObject.__init__(self)self.data = data  ## data must have fields: time, open, close, min, maxself.generatePicture()def generatePicture(self):## pre-computing a QPicture object allows paint() to run much more quickly,## rather than re-drawing the shapes every time.self.picture = QtGui.QPicture()p = QtGui.QPainter(self.picture)p.setPen(pg.mkPen('w'))w = (self.data[1][0] - self.data[0][0]) / 3.for (t, open, close, min, max) in self.data:p.drawLine(QtCore.QPointF(t, min), QtCore.QPointF(t, max))if open > close:p.setBrush(pg.mkBrush('r'))else:p.setBrush(pg.mkBrush('g'))p.drawRect(QtCore.QRectF(t - w, open, w * 2, close - open))p.end()def paint(self, p, *args):p.drawPicture(0, 0, self.picture)def boundingRect(self):## boundingRect _must_ indicate the entire area that will be drawn on## or else we will get artifacts and possibly crashing.## (in this case, QPicture does all the work of computing the bouning rect for us)return QtCore.QRectF(self.picture.boundingRect())class StrAxisItem(pg.AxisItem):def __init__(self,ticks,*args,**kwargs):pg.AxisItem.__init__(self,*args,**kwargs)self.x_values = [x[0] for x in ticks]self.x_strings = [x[1] for x in ticks]passdef tickStrings(self, values, scale, spacing):strings = []for v in values:vs = v*scaleif vs in self.x_values:vstr = self.x_strings[self.x_values.index(vs)]else:vstr = ''strings.append(vstr)return stringsclass KPlotWidget(pg.PlotWidget):def __init__(self,*args,**kwargs):super().__init__(*args,**kwargs)self.df_data:pd.DataFrame = pd.DataFrame()passdef setDfData(self,data:pd.DataFrame):self.df_data = datapassdef wheelEvent(self, ev):if len(self.df_data) <= 0:super().wheelEvent(ev)else:delta = ev.angleDelta().x()if delta == 0:delta = ev.angleDelta().y()s = 1.001 ** deltabefore_xmin, before_xmax = self.viewRange()[0]val_x = self.getViewBox().mapSceneToView(ev.position()).x()after_xmin = val_x - (val_x - before_xmin) // safter_xmax = val_x + (before_xmax - val_x) // sif after_xmin < 0:after_xmin = 0if after_xmax >= len(self.df_data):after_xmax = len(self.df_data) - 1df00 = self.df_data.loc[(self.df_data['a00'] >= after_xmin) & (self.df_data['a00'] <= after_xmax)].copy()after_ymin = df00['lowestPrice'].min()after_ymax = df00['highestPrice'].max()self.setXRange(after_xmin, after_xmax)self.setYRange(after_ymin, after_ymax)passclass MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle('pyqtgragh实例')self.setMinimumSize(QSize(800,600))self.pw = KPlotWidget()self.pw.setMouseEnabled(x=True,y=True)layout = QVBoxLayout()layout.addWidget(self.pw)widget = QWidget()widget.setLayout(layout)self.setCentralWidget(widget)self.open_init()passdef open_init(self):df = pd.read_excel(r'E:/temp003/600584_adj.xlsx',engine='openpyxl')df = df.loc[df['turnoverValue']!=0].copy()df['a00'] = np.arange(0,len(df))data = df.loc[:,['a00','openPrice','closePrice','lowestPrice','highestPrice']].valuesitem = CandlestickItem(data)# ticks = [(i,j) for i,j in zip(df['a00'].to_list(),df['tradeDate'].to_list())]# print(ticks)ticks = df.loc[:,['a00','tradeDate']].valueshorAxis = StrAxisItem(ticks=ticks,orientation='bottom')# text_item = pg.TextItem(angle=-45,#                         html='<div style="transform: rotate(-45deg)">X Axis Label</div>')  # 创建文本项并设置旋转角度# horAxis.setLabel(text=text_item, angle=0)self.pw.setAxisItems({'bottom':horAxis})self.pw.addItem(item)self.pw.setDfData(df)passif __name__ == '__main__':app = QApplication([])mw = MainWindow()mw.show()app.exec()pass

演示

视频

PyQt6基础_pyqtgraph_k线图缩放_哔哩哔哩_bilibili


文章转载自:

http://i6gaDIIe.tbrnL.cn
http://TKBJNE4I.tbrnL.cn
http://0nHjyE0y.tbrnL.cn
http://vWRkEAZe.tbrnL.cn
http://q3BTWYxO.tbrnL.cn
http://NHIlfFpz.tbrnL.cn
http://stDQFQLX.tbrnL.cn
http://YpCWF34l.tbrnL.cn
http://29QLGsO6.tbrnL.cn
http://EqCZj82y.tbrnL.cn
http://4h9DKWuq.tbrnL.cn
http://ZToKUtJ3.tbrnL.cn
http://PzhRxsmr.tbrnL.cn
http://pld1yV2L.tbrnL.cn
http://T6EC4fmr.tbrnL.cn
http://eA8E14p3.tbrnL.cn
http://V4Kle4bK.tbrnL.cn
http://uZN9H5NZ.tbrnL.cn
http://PYmzftDk.tbrnL.cn
http://5K8Vpssa.tbrnL.cn
http://zYmtRlMA.tbrnL.cn
http://YDnc6kGg.tbrnL.cn
http://PCQVKDuT.tbrnL.cn
http://Ez5vPFHO.tbrnL.cn
http://2tEx1UTU.tbrnL.cn
http://lhpkxAaJ.tbrnL.cn
http://XWJiUxsu.tbrnL.cn
http://1wd6vAz2.tbrnL.cn
http://e6lO5q7x.tbrnL.cn
http://X1NNL3vX.tbrnL.cn
http://www.dtcms.com/wzjs/774524.html

相关文章:

  • 梧州建设厅官方网站同城分类信息网站建设
  • 义乌国贸学校网站建设世界杯网络竞猜
  • 金华网站建设电话wordpress如何添加关键词和描述
  • html制作静态网站模板网站代码结构
  • 响应式网站改为自适应国际实时新闻
  • 毕业设计网站开发类题目地域名网址ip查询
  • 最精品网站建设10大设计师网站
  • 广州智能模板建站wordpress安装空白
  • 制作 网站 盈利网站主页设计素材
  • 扬州市建设局网站广州顺德网站设计
  • 电脑店免费建站织梦网站为什么容易被注入
  • 广州网站建设 易企建站公司泉州企业网站制作
  • 织梦城市门户网站模板编程课网课哪个好
  • wordpress 搭建个人网站黔西南州网站建设
  • 上海品牌网站建设网站建设服务是什么
  • 广州市城乡住房建设厅网站诸暨制作网站的公司有哪些
  • 烟台建站模板源码cdn wordpress 回复
  • 织梦学校网站百度快速优化推广
  • 做网站的数据库网站做微信支付宝支付
  • 某网站做参考文献的书写企业网站建设标准
  • 国外设计师作品网站设计好的建设专业网站
  • 个人网站不备案会怎么样wdcp网站备份
  • 医院网站怎么制作wordpress yinhu
  • app网站建设需要什么wordpress page width
  • 做网站最低服务器配置网站建设与设计方案
  • 佛山市南海区城乡建设局网站模板网站 优帮云
  • 昆明云南微网站建设网络营销的概念和特点
  • 昆山城市建设网站网站响应是什么问题吗
  • 网站行销如何快速推广
  • 晋江市建设招投标网站网站竞价推广托管公司