线条缩放

在数据量比较的折线图或者曲线图,受图表本身显示区域大小的限制,不能精细地显示某一小块区域的数据变化,QChartView提供了方法setRubberBand()可以实现一种类似放大镜的功能,可以将局部区域的数据放大到整个图表显示区域中显示。这样就可以方便地实现在图表中对图形序列的局部放大观察。

线条缩放显示样例

示例显示了如何使用鼠标利用QRubberBand 来创建自定义的缩放效果。完整代码如下:

import sys,mathfrom PyQt5.QtCore import Qt, QTimer, QRandomGenerator, QEvent, QPointFfrom PyQt5.QtGui import QPainter, QPenfrom PyQt5.QtWidgets import QApplication, QMainWindow, QGraphicsViewfrom PyQt5.QtChart import QChart, QChartView,QLineSeries, QValueAxis class MyChartView(QChartView): def __init__(self, chart, parent = None): super(MyChartView, self).__init__(chart, parent) self.isTouching = False self.setRubberBand(QChartView.RectangleRubberBand) def keyPressEvent(self, event): if event.key() == Qt.Key_Plus: self.chart().zoomIn() elif event.key() == Qt.Key_Minus: self.chart().zoomOut() elif event.key() == Qt.Key_Left: self.chart().scroll(-10, 0) elif event.key() == Qt.Key_Right: self.chart().scroll(10, 0) elif event.key() == Qt.Key_Up: self.chart().scroll(0, 10) elif event.key() == Qt.Key_Down: self.chart().scroll(0, -10) else: QGraphicsView.keyPressEvent(self, event) class DemoZoomLineChart(QMainWindow): def __init__(self, parent=None): super(DemoZoomLineChart, self).__init__(parent) # 设置窗口标题 self.setWindowTitle('实战 Qt for Python: 线条缩放演示') # 设置窗口大小 self.resize(480, 360) self.createChart() def createChart(self): series = QLineSeries() for i in range(500): pnt = QPointF(i, math.sin(math.pi * i / 50) * 100 + QRandomGenerator.global_().bounded(20)) series.append(pnt) chart = QChart() chart.setTitle('线条缩放显示') chart.addSeries(series) chart.setAnimationOptions(QChart.SeriesAnimations) chart.legend().hide() chart.createDefaultAxes() chartView =MyChartView(chart) chartView.setRenderHint(QPainter.Antialiasing) self.setCentralWidget(chartView) if __name__ == '__main__': app = QApplication(sys.argv) window = DemoZoomLineChart() window.show() sys.exit(app.exec())

运行效果如下图:

曲线缩放演示

本文知识点使用QRubberBand 创建自定义的图表缩放效果。

qchart 图表_实战PyQt5: 158-QChart图表之线条缩放显示相关推荐

  1. qchart 坐标轴设置_实战PyQt5: 156-QChart图表之更换图表主题

    图表主题 QChart定义了多种图表主题,可以创建不同风格的图表显示,在调整图表主题风格的时候,为了使整个应用的风格看起来更和谐一致,一般要使用应用程序的背景调色板来调整应用的颜色以适配图表所选的主题 ...

  2. qchart 设置线颜色_实战PyQt5: 137-QChart图表之散点图

    散点图(scatter chart)将序列显示为一组点.值由点在图表中的位置表示.类别由图表中的不同标记表示.散点图通常用于比较跨类别的聚合数据.在QChart中,使用类QScatterSeries创 ...

  3. chart.js 饼图显示百分比_实战PyQt5: 135-数据可视化之QChart绘制饼图

    饼图是数据可视图表的基本类型,在QChart中,QPieSeries, QPieSlice处理饼图的绘制. QPieSeries QPieSeries类以饼图形式显示数据.饼图系列由定义为QPieSl ...

  4. pyecharts 显示坐标轴线_实战PyQt5: 153-QChart图表之对数坐标轴

    一些成指数变化的数据,在图表中需要使用对数坐标轴显示.QChart提供列QLogValueAxis来实现对数坐标轴. QLogValueAxis QLogValueAxis类将对数刻度添加到图表的坐标 ...

  5. openopc.opcerror: dispatch: 无效的类字符串_实战PyQt5: 064-MV框架中的Model类

    模型(Model)简介 在Model-View框架中,模型(Model)为视图(View)和委托(Delegate)使用数据提供了标准接口.大多数情况下模型中并不真正存储数据(如果只有少量的数据,可以 ...

  6. pyqt5 qwidget 边框_实战PyQt5: 116-画刷类QBrush

    QBrush简介 QBrush类定义由QPainter绘制的形状的填充图案.一个画刷可以有颜色,填充图案,渐变和纹理属性. 样式填充使用Qt.BrushStyle枚举变量定义填充图案.默认的填充样式为 ...

  7. qss qmenu 设置icon位置大小_实战PyQt5: 125-使用配置文件来保存和恢复应用的设置...

    在通常情况下,用户使用一个软件的时候,期望保存一些数据状态,比如窗口的大小和位置,主题,选项,最近操作过的文件等等信息,在下一次启动软件的时候就自动加载这些信息,让软件恢复到上一次退出时的状态.在Wi ...

  8. python 图表_做自己漂亮的图表,一文学会如何用Python填充图表样式

    通过最近几次和大家的探讨,相信大家对于matplotlib库已经熟悉了吧,作为Python数据可视化的经典库和常用库,matplotlib库拥有强大的二维制图能力,前面咱们所探讨的无论是柱状图.条形图 ...

  9. button 样式_实战PyQt5: 111-可以使用QSS样式表的部件

    可以使用QSS样式表的部件 QSS样式表支持各种部件,属性,伪状态和子控件,从而可以实现定制部件的外观,下面我们将详细列出可以使用QSS样式表的部件: QAbstractScrollArea:所有派生 ...

最新文章

  1. WINCE6.0 error C2220: warning treated as error问题解决
  2. python解释器哪一年_Python即Python解释器的发展史
  3. [luogu5142]区间方差
  4. 用FFmpeg搭建基于CNN的视频分析方案
  5. 渤海发现大油田,证券会提示风险,微博回应流量造假,刘国梁制定史上最严奖惩体系,这就是今天的大新闻。...
  6. 剑指 Offer 32 - I. 从上到下打印二叉树
  7. linux 下搭建yolov3错误,Ubuntu20.04+cuda11.1+yolo3 目标检测 深度学习系统 真正从0搭建 包含各类可能遇到的错误...
  8. 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理
  9. java 怎么调用js代码_在Java中直接调用js代码
  10. linux之pkill命令
  11. IOS调试—断点调试以及动态输出
  12. 动态磁盘转换成基本磁盘
  13. 分享一款在线转换工具,轻松将PDF转换成JPG格式
  14. 苹果cms(maccms) player播放器解密
  15. 大数据对人们生活的影响有哪些
  16. 携程2016校园招聘笔试题分析
  17. 科学松鼠会-Kindle精选
  18. 思科模拟器(Cisco Packet Tracer7.2.1)安装过程
  19. java文本压缩算法_java 什么算法压缩文件最小
  20. 如何修复SSL: CERTIFICATE_VERIFY_FAILED

热门文章

  1. 《Cocos Creator游戏实战》虚拟摇杆实现
  2. 分布式强化学习之D4PG
  3. cad中lisp文件给恶作剧_求大神们帮忙更改下CAD 的lsp 文件 小弟谢谢啦
  4. 华为AR路由器端口配置trunk_瑞哥呕心之作——华为HCIA(HCNA)笔记,还不快快收藏!...
  5. SIFT算法详解——图像特征提取与匹配
  6. 明月浩空播放器php源码,Emlog插件-明月浩空音乐播放器
  7. 【Python学习】自定义对象转JSON
  8. 济南python工资一般多少-济南在线学Python
  9. 复现 MMDetection
  10. 【支付】中国的支付清算体系是怎么玩的