就是这些自己遇到的需求:

如有不对,请大佬不吝赐教.
Qchart设定多个不同刻度的Y轴
修改自定义折线图的坐标轴
改变折线图的底色,底色透明
鼠标悬停事件

import datetime
import sysfrom PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QCursor, QColor, QBrush
from PyQt5.QtWidgets import QToolTip
from PyQt5.QtChart import *class View_event(QtWidgets.QWidget):# view 总窗口def __init__(self):super(View_event, self).__init__()# self.setupUi(self)# 执行折线视图函数self.create_chart()def create_chart(self):# 创建折线视图窗口chart = QChartView(self)chart.setGeometry(QtCore.QRect(20, 100, 980, 380))chart.setRenderHint(QPainter.Antialiasing)  # 抗锯齿chart.raise_()chart._chart = QChart(title="折线图堆叠")  # 创建折线视图# chart._chart.setBackgroundVisible(visible=False)      # 背景色透明chart._chart.setBackgroundBrush(QBrush(QColor("#FFFFFF")))     # 改变图背景色#  图形项默认无法接收悬停事件,可以使用QGraphicsItem的setAcceptHoverEvents()函数使图形项可以接收悬停事件。chart._chart.setAcceptHoverEvents(True)# 4条折线的坐标值dataTable = [# 这里是y值对应13个x轴["PTSA",130, 182, 120, 154, 109, 170, 110,150, 132, 141, 114, 100, 160],["pH", 120, 154, 109,132, 160,110, 130, 141, 194, 170,110, 182,110],["ORP",109,132,174,130,  120,150, 110, 170,  120,164,  132, 141,  160],["Conductivity", 160, 109, 154, 130,182, 132, 141, 160,150,170, 180,164,120]]# 执行创建折线的函数self.create_series(dataTable,chart)chart._chart.createDefaultAxes()  # 创建默认的轴chart._chart.axisY().setTickCount(11)  # y1轴设置10个刻度chart._chart.axisY().setLabelFormat("%d")chart._chart.axisY().setRange(100, 200)  # 设置y1轴范围# 定义多个y轴y2_Aix = QValueAxis()  # 定义y2轴y2_Aix.setLabelFormat("%d")y2_Aix.setRange(250, 360)y2_Aix.setTickCount(11)chart._chart.addAxis(y2_Aix, Qt.AlignLeft)  # 添加到左侧y3_Aix = QValueAxis()  # 定义y3轴y3_Aix.setLabelFormat("%d")y3_Aix.setRange(0, 110)y3_Aix.setTickCount(11)chart._chart.addAxis(y3_Aix, Qt.AlignRight)  # 添加到右侧y4_Aix = QValueAxis()  # 定义y4轴y4_Aix.setLabelFormat("%d")y4_Aix.setRange(3870, 3980)y4_Aix.setTickCount(11)chart._chart.addAxis(y4_Aix, Qt.AlignRight)  # 添加到右侧chart._chart.axisX().setTickCount(11)  # X轴设置10个刻度# 执行定义X轴的函数self.customAxisX(chart._chart)chart.setChart(chart._chart)def create_series(self,dataTable,chart):# 创建折线的函数for i, data_list in enumerate(dataTable):  # [index,[list]]# 创建曲线series = QLineSeries(chart._chart)# 设置折线名series.setName(data_list[0])for j, v in enumerate(data_list[1:]):#  添加折线和对应的坐标点series.append(j, v)series.setPointsVisible(True)  # 显示原点# 鼠标悬停连接事件series.hovered.connect(self.onSeriesHoverd)chart._chart.addSeries(series)  # 添加折线到视图窗口return chart._chartdef customAxisX(self,chart):# 自定义x轴(均分)chart = chartseries = chart.series()if not series:return# 获取当前时间前8小时的一小时内的时间time =[]for index in range(13):num = 60/13last_day = (datetime.datetime.now() + datetime.timedelta(hours=-8,minutes=- index*num)).strftime("%H:%M")time.append(last_day)category=list(reversed(time))'''QValueAxis是轴的范围什么的不需要自己指定,轴上显示的label(也就是0,1,2,3这些内容)是默认的。qt会根据你轴上的点自动设置。若你需要自定义一些内容,QCategoryAxis是比较好的,但是需要自己自定义好才可以调用。'''axisx = QCategoryAxis(chart, labelsPosition=QCategoryAxis.AxisLabelsPositionOnValue)axisx.setGridLineVisible(False)  # 隐藏网格线条axisx.setTickCount(len(category))  # 设置刻度个数minx = chart.axisX().min()maxx = chart.axisX().max()tickc = chart.axisX().tickCount()print(tickc)if tickc < 2:axisx.append(category[0])else:step = (maxx - minx) / (tickc - 1)  # tickc>=2for i in range(0, tickc):axisx.append(category[i], minx + i * step)# 保存x轴值chart.setAxisX(axisx, series[-1])def onSeriesHoverd(self, point, state):# 鼠标悬停事件(底部x,y)if state:try:name = self.sender().name()except:# QCursor.pos()悬停提示文字显示的位置name = ""QToolTip.showText(QCursor.pos(), "%s\nx: %s\ny: %s" %(name, point.x(), point.y()))if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)# 初始化所有视图login = View_event()login.show()sys.exit(app.exec_())

执行效果如下

pyqt5,Qchart画折线图,设定多个不同刻度的Y轴,修改自定义折线图的坐标轴,改变折线图的底色相关推荐

  1. Echarts实现多个Y轴,2个以上不同计量单位的折线图数据横向对比

    在做项目时遇到一个需求,要使用主要数据,与气温和降水量做折线图横向对比.这里的问题在于:超过3种计量单位的数据做折线图的话,因为Y轴的计量单位得不同,也就是得有3个以上的Y轴.所以做主要数据和其中一个 ...

  2. origin如何绘制双y轴曲线_Origin用矩阵绘制多层曲面映射图

    点击上方关注点击下方点赞 [导读]怎样绘制多曲面映射图?1.矩阵数据的准备 1.1 XYYYY型数据 我们在实验中得到一张Excel表格 一列X表示电场强度,负载量不同的多列Y又分为Pm.Pr两组.那 ...

  3. excel部分网格线不见了_精品图表 | Excel绘制y轴带有阈值分割的柱形图和棒棒图...

    作者:刘必麟(@小必) 图书<Excel人力资源管理实战宝典>一书作者(书见文末) 本期内容主要是给大家介绍一下在y轴上带有阈值分割的柱形图是如何做的? 当然这个图还可以进行稍微地变化,有 ...

  4. echarts折线图常见配置项 分割线虚线样式 显示y轴符号 设置间隔

    option = {xAxis: {type: 'category',data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']},yAxis: { ...

  5. matlab画置信区间图,matlab绘制带置信区间的双y轴图形 | 学步园

    matlab的双y轴网上有很多方法,但是带置信区间的双y轴就很少了,并且由于网上给的例子一般都是使用红蓝两色,对于只想使用黑色或者灰色的俺们来说太鲜艳啦~ 上图为使用matlab绘制的双y轴带置信区间 ...

  6. origin做双Y轴折线图的具体步骤

    1.导入数据: file-->Open excel 选择自己的数据集 2.插入图表 :plot-->Line-->Line,这是会弹出一个对话框: 3.通过导入的数据进行建图, 选择 ...

  7. js折线图设置y轴刻度_d3.js实现自定义多y轴折线图

    前言 需求是实现一个生命体征的体温单,x轴是时间线,y轴有多个体征项.效果不是特别复杂,但是行业特殊性,所以也没有现成可用的,所以用 d3.js 实现了一个多y轴的折线图. 基础 这张图只用了d3.j ...

  8. Echarts实现折线图Y轴不等距百分比(最终解决方案)

    Echarts实现折线图Y轴不等距百分比(最终解决方案-上集) 出现背景 解决思路 总结 附加 出现背景   最近公司有一个需求,主要是想展示近7日产品的一个良品率(百分率制).但是呢,基本上每天这个 ...

  9. Origin: 双Y轴 | 柱状图 | 折线图 | 垂线散点图的结合绘制

    origin | 双Y轴 | 添加图层 | 柱状图 | 折线图 | 散点图 一.前言 二.数据准备 三.绘图 3.1 图层1-绘制柱状图 3.2 图层2-折线图的绘制 3.2.1 添加新图层-折线图 ...

最新文章

  1. 柳昀哲课题组在Nature Reviews Neuroscience上发表长篇综述提出表征富集理论
  2. Dapper学习笔记(3)-增、删、改、查
  3. CTFshow php特性 web149
  4. 10个实用的但偏执的Java编程技术
  5. Java 并发编程-不懂原理多吃亏(送书福利)
  6. linux下安装erlang
  7. vnc连接服务器怎么配置文件,vnc服务器和客户端怎么配置文件
  8. time和datatime模块
  9. Enterprise Solution 进销存管理软件 C/S架构,支持64位系统 物流,资金流,信息流全面集成...
  10. 京东支付逻辑存在不安全因素
  11. Linux下编写GT911触摸驱动
  12. 中国各省所处的经纬度范围
  13. 为什么TIME_WAIT状态是2MSL?(2个原因)
  14. 金华职业技术学院计算机网络技术考试,金华职业技术学院2016年提前招生计算机应用技术专业测评方案...
  15. 阿里云服务器搭建Django环境二:django+mysql环境搭建
  16. 软件测试自学到什么程度可以开始找工作?
  17. Java简单的XSS过滤方法
  18. 3dsmax 制作u型长方体
  19. 梅尔加尼服务器状态,梅尔加尼服务器第二界闪光平原暴力竞走大赛
  20. python中0x3f_单片机中0x3f代表什么意思

热门文章

  1. FCA-FineReport入门认证考试题
  2. 信号与系统常见问题总结(1)
  3. 电大软件测试 本 形考及答案,国家开放大学《软件测试》形考任务2
  4. 2016年04月12日
  5. excel柱状图粗细怎么调_手把手教你怎么制作excel中漂亮的柱状图
  6. 【英语月总】我真的意识到英语的重要性了吗
  7. 那些让清英受益终生的书
  8. 基于微服务技术的全球航空订票平台
  9. leetcode--802. Find Eventual Safe States题解
  10. Ubuntu 给用户添加sudo权限