前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PyQt5:QChart绘制折线图(1)

PyQt5:QChart绘制折线图(1)

作者头像
何其不顾四月天
发布2023-03-10 13:39:09
2.1K0
发布2023-03-10 13:39:09
举报
文章被收录于专栏:Qt&PyQt四月天的专栏

PyQt5:QChart绘制折线图

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

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

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

PyQt相关库调用。

代码语言:javascript
复制
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtChart import *

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

代码语言:javascript
复制
		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("折线一")#折线命名

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

代码语言:javascript
复制
		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)

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

代码语言:javascript
复制
		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

显示效果图如下:

双折线图
双折线图

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

代码语言:javascript
复制
self.charView = QChartView(self) #设置父窗体为主窗口
代码语言:javascript
复制
self.charView = QChartView() #charview为单独的窗体显示

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

代码语言:javascript
复制
app = QApplication(sys.argv)
window = m_window();
#window.show()  #把window显示给注释
sys.exit(app.exec_())

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

代码语言:javascript
复制
self.LineSeries = QLineSeries()#	类的实例化
self.LineSeries = QLineSeries #别名

使用默认坐标系,运行图例如下:

默认坐标系运行图例
默认坐标系运行图例

源码如下: 源码路径

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

代码语言:javascript
复制
		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轴单元格刻度线

运行效果图如下:

更新坐标设置方式效果图如下
更新坐标设置方式效果图如下
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PyQt5:QChart绘制折线图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档