python_pyqtgraph蜡烛图缩放问题处理

这篇具有很好参考价值的文章主要介绍了python_pyqtgraph蜡烛图缩放问题处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面:

pyqtgraph包中现有的例子中,蜡烛图的缩放不是很好用。这里做了一些修改,使用起来更自然些。

放置蜡烛图控件的父容器设置

v.setMouseEnabled(x=True, y=False)
v.setAutoVisible(x=False, y=True)

修改后的蜡烛图控件

class CandlestickItem(pg.GraphicsObject):
    def __init__(self, data):
        pg.GraphicsObject.__init__(self)
        self.data = data  ## data must have fields: time, open, close, min, max
        self.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('d'))
        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())
        # data = np.array(self.data)
        # xmin = data[:, 0].min()
        # xmax = data[:, 0].max()
        # ymin = data[:, 1:].min()
        # ymax = data[:, 1:].max()
        # return QtCore.QRectF(xmin, ymin, xmax - xmin, ymax - ymin)

    def viewTransformChanged(self):
        super(CandlestickItem, self).viewTransformChanged()
        br = self.boundingRect()
        data = np.array(self.data)
        # Get coords of view mapped to data
        mapped_view = self.mapRectToView(self.viewRect())
        # Get start and end of x slice
        x_slice_start = int(mapped_view.x()) - 1
        x_slice_end = x_slice_start + (math.ceil(mapped_view.width()) + 1)
        if x_slice_start < 0:
            x_slice_start = 0
        if x_slice_end > data.shape[0]:
            x_slice_end = data.shape[0]
        # Get data in x interval
        y_slice = data[x_slice_start:x_slice_end]
        try:
            ymin = np.nanmin(y_slice[:, 2])
            ymax = np.nanmax(y_slice[:, 2])
            if ymin != ymax:
                if type(self.getViewBox())!= pg.ViewBox:
                    pass
                else:
                    self.getViewBox().setLimits(xMin=br.x(), xMax=br.width(), yMin=ymin, yMax=ymax)
        except ValueError:
            pass
        return br

修改后,蜡烛图的缩放更自然文章来源地址https://www.toymoban.com/news/detail-790184.html

到了这里,关于python_pyqtgraph蜡烛图缩放问题处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python_PyQtGraph 学习笔记(三)】基于GraphicsLayoutWidget实现显示曲线对象 鼠标位置处坐标的功能

    在PyQtGraph的官方例程中有此功能的实现,可参考Crosshair / Mouse interaction;但是坐标值的变化是超过整数时才变化,不符合实际开发中要求的精度。 在实现该功能的过程中主要参考了(详细分析)如何使用pyqt5和pyqtgraph在图像上增加图例并显示鼠标位置处的变量值,但是在获取

    2024年02月09日
    浏览(60)
  • 【Python_PyQtGraph 学习笔记(三)】基于GraphicsLayoutWidget实现显示曲线对象鼠标位置处坐标的功能

    在PyQtGraph的官方例程中有此功能的实现,可参考Crosshair / Mouse interaction;但是坐标值的变化是超过整数时才变化,不符合实际开发中要求的精度。 在实现该功能的过程中主要参考了(详细分析)如何使用pyqt5和pyqtgraph在图像上增加图例并显示鼠标位置处的变量值,但是在获取

    2024年02月07日
    浏览(48)
  • 【Python_PyQtGraph 学习笔记(二)】基于PySide2和GraphicsLayoutWidget实现动态绘制数据曲线

    PyQtGraph的例程里基本都是一次性的获取数据并将其绘制为图形,然而在实际开发中大多需要对实时的数据进行图形化展示,这时候就需要对数据进行实时的更新和绘制。 在最近的项目中选用了 Pyside2来写GUI界面,PyQtGraph.GraphicsLayoutWidget来进行图形的绘制,下面简单介绍如何实

    2024年02月02日
    浏览(49)
  • Python图像处理丨图像缩放、旋转、翻转与图像平移

    摘要: 本篇文章主要讲解Python调用OpenCV实现图像位移操作、旋转和翻转效果,包括四部分知识:图像缩放、图像旋转、图像翻转、图像平移。 本文分享自华为云社区《[Python图像处理] 六.图像缩放、图像旋转、图像翻转与图像平移》,作者:eastmount 。 本篇文章主要讲解Pyth

    2024年02月06日
    浏览(57)
  • CSS 蜡烛效果

    2024年01月23日
    浏览(29)
  • OpenCV对图片进行缩放处理

    在下面的代码中,我会为你优化和解释这段程序:

    2024年02月13日
    浏览(42)
  • matlab 矩阵处理方法:缩放、插值、拟合、分块...

    目录 1. 缩放矩阵尺寸 2. 对矩阵进行反距离权重插值填补nan值 3. 数据拟合 4. 数组大小超过限制(分块处理) 在MATLAB中,可以使用 imresize 函数对矩阵进行缩放尺寸操作。 imresize 函数用于调整图像或矩阵的尺寸,可以按比例缩小或放大矩阵。 其中: A 是原始矩阵或图像。 sca

    2024年02月11日
    浏览(33)
  • 机器学习流程—数据预处理 缩放和转换

    相信机器学习的从业者,一定听到到过“特征缩放”这个术语,它被认为是数据处理周期中不可跳过的部分,因进行相应的操作们可以实现 ML 算法的稳定和快速训练。在本文中,我们将了解在实践中用于执行特征缩放的不同技术。 不同评价指标往往具有不同的 量纲 和量纲单

    2024年03月11日
    浏览(53)
  • 图像处理之高质量缩放(抗锯齿)

     1.介绍     在做图像处理过程中,我们有时会将图像缩小之后再进行处理,常用的开源图像算法包“Opencv”已经带有resize函数,用起来也是很容易上手的。     对于Opencv中函数原型:cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])     参数:     interpolation - 插值方法,共有

    2024年02月04日
    浏览(75)
  • 电脑缩放异常、显示亮度无法调整的处理办法

      本文介绍Windows电脑 系统更新 或 重装系统 后,出现屏幕亮度 最高且无法调整 、电脑 字体变小 等问题的解决方法。   最近更新了 Windows 10 20H2 版本,更新完毕打开电脑后发现,电脑中各类 字体变小 了,仿佛就是从一个普通的笔记本电脑变成了大屏幕电脑。   先看

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包