PyQt5:QChart绘制折线图(1)

举报
何其不顾四月天 发表于 2020/12/28 23:18:26 2020/12/28
【摘要】 PyQt5:QChart绘制折线图 QChart下载 在之前的博客里边,pyqt5,pip下载已经介绍完全,这次单独下载Qt Charts。 pip install PyQtChart 注意:在下载过程中,我之前安装的是 Pyqt5.11,会把PyQt5.11卸载,安装PyQt5.12,PyQtChart5.12。 Qt Charts绘制折线图 开发环境说...

PyQt5:QChart绘制折线图

  1. QChart下载

    在之前的博客里边,pyqt5,pip下载已经介绍完全,这次单独下载Qt Charts。
    pip install PyQtChart

注意:在下载过程中,我之前安装的是 Pyqt5.11,会把PyQt5.11卸载,安装PyQt5.12,PyQtChart5.12。

  1. Qt Charts绘制折线图
 开发环境说明: 系统环境:Win10 IDE:Vs2017+Python3.6+Pyqt5.12

  
 
  • 1
  • 2
  • 3

PyQt相关库调用。

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtChart import *

  
 
  • 1
  • 2
  • 3
  • 4

相关片段代码:
1>绘制折线一

		self.series_1 = QLineSeries() #定义LineSerise,将类QLineSeries实例化
		self._1_point_0 = QPointF(0.00,0.00) #定义折线坐标点
		self._1_point_1 = QPointF(0.80,6.00)
		self._1_point_2 = QPointF(2.00,2.00)
		self._1_point_3 = QPointF(4.00,3.00)
		self._1_point_4 = QPointF(1.00,3.00)
		self._1_point_5 = QPointF(5.00,3.00)
		self._1_point_list = [self._1_point_0,self._1_point_1,self._1_point_4,self._1_point_2,self._1_point_3,self._1_point_5] #定义折线点清单
		self.series_1.append(self._1_point_list) #折线添加坐标点清单
		self.series_1.setName("折线一")#折线命名

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2>x轴,y轴的相关属性设置

		self.x_Aix = QValueAxis()#定义x轴,实例化
		self.x_Aix.setRange(0.00,5.00) #设置量程
		self.x_Aix.setLabelFormat("%0.2f")#设置坐标轴坐标显示方式,精确到小数点后两位
		self.x_Aix.setTickCount(6)#设置x轴有几个量程
		self.x_Aix.setMinorTickCount(0)#设置每个单元格有几个小的分级 self.y_Aix = QValueAxis()#定义y轴
		self.y_Aix.setRange(0.00,6.00)
		self.y_Aix.setLabelFormat("%0.2f")
		self.y_Aix.setTickCount(7)
		self.y_Aix.setMinorTickCount(0)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3>CharView设置及坐标轴窗口设置

		self.charView = QChartView(self)  #定义charView,父窗体类型为 Window
		self.charView.setGeometry(0,0,self.width(),self.height())  #设置charView位置、大小
		self.charView.chart().addSeries(self.series_1)  #添加折线
		self.charView.chart().addSeries(self.series_2)  #添加折线
#		self.charView.chart().addSeries(self.series_3)  #添加折线
		self.charView.chart().setAxisX(self.x_Aix) #设置x轴属性
		self.charView.chart().setAxisY(self.y_Aix) #设置y轴属性
#		self.charView.chart().createDefaultAxes() #使用默认坐标系
		self.charView.chart().setTitleBrush(QBrush(Qt.cyan))  #设置标题笔刷
		self.charView.chart().setTitle("双折线") #设置标题 self.charView.show()#显示charView

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

显示效果图如下:
双折线图
4>其他说明:
CharView既可以单独作为一个窗口显示,也可以嵌入到widget或者别的窗体显示。
当设置主窗口为父窗体的是时候,如果不做单独的设置,charview为固定大小,没有自适应属性。
当charview作为单独窗体显示的时候,有自适应属性。

self.charView = QChartView(self) #设置父窗体为主窗口

  
 
  • 1
self.charView = QChartView() #charview为单独的窗体显示

  
 
  • 1

如果只想显示单独的窗体,把父窗口给隐藏就可以,或者把

app = QApplication(sys.argv)
window = m_window();
#window.show()  #把window显示给注释
sys.exit(app.exec_())

  
 
  • 1
  • 2
  • 3
  • 4

碰到一个奇怪的问题,如果使用默认x,y轴坐标系,坐标点显示正确,如果使用自定义坐标轴,则第二个点显示错误,这个问题随后研究。
注意:类的实例化与别名的区别,如果不注意,在调用类成员函数时,会造成编译错误。

self.LineSeries = QLineSeries()#	类的实例化
self.LineSeries = QLineSeries #别名

  
 
  • 1
  • 2

使用默认坐标系,运行图例如下:
默认坐标系运行图例
源码如下:
源码路径

上诉问题解决方法:
设置x轴,y轴方法修改如下:

		self.charView.chart().createDefaultAxes() #使用默认坐标系
		self.charView.chart().axisX().setRange(0.00,5.00) #设置默认x轴量程
		self.charView.chart().axisX().setTickCount(6)#设置x轴坐标轴节点个数
		self.charView.chart().axisX().setMinorTickCount(2)#设置单元格刻度线
		self.charView.chart().axisX().setLabelFormat("%0.2f")#设置坐标轴精确度
		self.charView.chart().axisY().setRange(0.00,6.00)#设置Y轴坐标轴量程
		self.charView.chart().axisY().setTickCount(7)#设置坐标轴节点
		self.charView.chart().axisY().setMinorTickCount(2)#设置Y轴单元格刻度线

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

运行效果图如下:
更新坐标设置方式效果图如下

文章来源: blog.csdn.net,作者:何其不顾四月天,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/u011218356/article/details/88957823

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。