pyqt5,Qchart画折线图,设定多个不同刻度的Y轴,修改自定义折线图的坐标轴,改变折线图的底色
就是这些自己遇到的需求:
如有不对,请大佬不吝赐教.
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轴,修改自定义折线图的坐标轴,改变折线图的底色相关推荐
- Echarts实现多个Y轴,2个以上不同计量单位的折线图数据横向对比
在做项目时遇到一个需求,要使用主要数据,与气温和降水量做折线图横向对比.这里的问题在于:超过3种计量单位的数据做折线图的话,因为Y轴的计量单位得不同,也就是得有3个以上的Y轴.所以做主要数据和其中一个 ...
- origin如何绘制双y轴曲线_Origin用矩阵绘制多层曲面映射图
点击上方关注点击下方点赞 [导读]怎样绘制多曲面映射图?1.矩阵数据的准备 1.1 XYYYY型数据 我们在实验中得到一张Excel表格 一列X表示电场强度,负载量不同的多列Y又分为Pm.Pr两组.那 ...
- excel部分网格线不见了_精品图表 | Excel绘制y轴带有阈值分割的柱形图和棒棒图...
作者:刘必麟(@小必) 图书<Excel人力资源管理实战宝典>一书作者(书见文末) 本期内容主要是给大家介绍一下在y轴上带有阈值分割的柱形图是如何做的? 当然这个图还可以进行稍微地变化,有 ...
- echarts折线图常见配置项 分割线虚线样式 显示y轴符号 设置间隔
option = {xAxis: {type: 'category',data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']},yAxis: { ...
- matlab画置信区间图,matlab绘制带置信区间的双y轴图形 | 学步园
matlab的双y轴网上有很多方法,但是带置信区间的双y轴就很少了,并且由于网上给的例子一般都是使用红蓝两色,对于只想使用黑色或者灰色的俺们来说太鲜艳啦~ 上图为使用matlab绘制的双y轴带置信区间 ...
- origin做双Y轴折线图的具体步骤
1.导入数据: file-->Open excel 选择自己的数据集 2.插入图表 :plot-->Line-->Line,这是会弹出一个对话框: 3.通过导入的数据进行建图, 选择 ...
- js折线图设置y轴刻度_d3.js实现自定义多y轴折线图
前言 需求是实现一个生命体征的体温单,x轴是时间线,y轴有多个体征项.效果不是特别复杂,但是行业特殊性,所以也没有现成可用的,所以用 d3.js 实现了一个多y轴的折线图. 基础 这张图只用了d3.j ...
- Echarts实现折线图Y轴不等距百分比(最终解决方案)
Echarts实现折线图Y轴不等距百分比(最终解决方案-上集) 出现背景 解决思路 总结 附加 出现背景 最近公司有一个需求,主要是想展示近7日产品的一个良品率(百分率制).但是呢,基本上每天这个 ...
- Origin: 双Y轴 | 柱状图 | 折线图 | 垂线散点图的结合绘制
origin | 双Y轴 | 添加图层 | 柱状图 | 折线图 | 散点图 一.前言 二.数据准备 三.绘图 3.1 图层1-绘制柱状图 3.2 图层2-折线图的绘制 3.2.1 添加新图层-折线图 ...
最新文章
- 柳昀哲课题组在Nature Reviews Neuroscience上发表长篇综述提出表征富集理论
- Dapper学习笔记(3)-增、删、改、查
- CTFshow php特性 web149
- 10个实用的但偏执的Java编程技术
- Java 并发编程-不懂原理多吃亏(送书福利)
- linux下安装erlang
- vnc连接服务器怎么配置文件,vnc服务器和客户端怎么配置文件
- time和datatime模块
- Enterprise Solution 进销存管理软件 C/S架构,支持64位系统 物流,资金流,信息流全面集成...
- 京东支付逻辑存在不安全因素
- Linux下编写GT911触摸驱动
- 中国各省所处的经纬度范围
- 为什么TIME_WAIT状态是2MSL?(2个原因)
- 金华职业技术学院计算机网络技术考试,金华职业技术学院2016年提前招生计算机应用技术专业测评方案...
- 阿里云服务器搭建Django环境二:django+mysql环境搭建
- 软件测试自学到什么程度可以开始找工作?
- Java简单的XSS过滤方法
- 3dsmax 制作u型长方体
- 梅尔加尼服务器状态,梅尔加尼服务器第二界闪光平原暴力竞走大赛
- python中0x3f_单片机中0x3f代表什么意思