PyQt5:QChart绘制折线图(1)

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

PyQt相关库调用。

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

相关片段代码:
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("折线一")#折线命名

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)

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

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

self.charView = QChartView(self) #设置父窗体为主窗口
self.charView = QChartView() #charview为单独的窗体显示

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

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

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

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

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

上诉问题解决方法:
设置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轴单元格刻度线

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

  • 11
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
如果你想在 PyQt5绘制折线图(line chart),可以使用 Matplotlib 库。下面是一个简单的示例代码: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QSizePolicy, QVBoxLayout, QWidget from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建 Matplotlib 图形 self.figure = Figure(figsize=(5, 4), dpi=100) self.canvas = FigureCanvas(self.figure) self.canvas.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) # 创建一个垂直布局,并将 Matplotlib 图形添加到其中 layout = QVBoxLayout() layout.addWidget(self.canvas) # 创建一个 QWidget,用于放置布局 widget = QWidget() widget.setLayout(layout) self.setCentralWidget(widget) # 绘制折线图 self.plot() def plot(self): # 获取 Matplotlib 的 Axes 对象 ax = self.figure.add_subplot(111) # 准备数据 x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] # 绘制折线图 ax.plot(x, y) # 添加标题和坐标轴标签 ax.set_title("Line Chart") ax.set_xlabel("X-axis") ax.set_ylabel("Y-axis") # 更新 Matplotlib 图形 self.canvas.draw() if __name__ == "__main__": app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.show() sys.exit(app.exec_()) ``` 在这个示例中,我们首先创建了一个 Matplotlib 图形,并将其添加到一个垂直布局中。然后,我们定义了一个 `plot` 方法,用于绘制折线图。在 `plot` 方法中,我们获取了 Matplotlib 的 Axes 对象,并使用 `plot` 函数绘制折线图。最后,我们添加了标题和坐标轴标签,并更新了 Matplotlib 图形。 在 `__main__` 方法中,我们创建了一个 QApplication 对象,并将其传递给我们的 MainWindow 类。然后,我们显示了窗口并启动了应用程序的事件循环。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值