用pyqt 展示一个折线图的界面
时间: 2023-12-22 14:05:06 浏览: 110
可以使用Matplotlib库来绘制折线图,并使用PyQt来将其嵌入到GUI界面中。以下是一个简单的例子:
```python
import sys
import numpy as np
import matplotlib.pyplot as plt
from PyQt5.QtWidgets import QApplication, QMainWindow, QSizePolicy, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建一个Matplotlib Figure对象
self.figure = plt.figure()
# 创建一个Matplotlib Axes对象
self.axes = self.figure.add_subplot(111)
# 生成一些数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 绘制折线图
self.axes.plot(x, y)
# 将Figure嵌入到GUI界面中
canvas = FigureCanvas(self.figure)
canvas.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
canvas.updateGeometry()
# 创建一个布局
layout = QVBoxLayout()
layout.addWidget(canvas)
# 创建一个QWidget,将布局设置为QWidget的主布局
widget = QWidget()
widget.setLayout(layout)
# 设置QWidget为主窗口的中央Widget
self.setCentralWidget(widget)
# 设置主窗口的标题和大小
self.setWindowTitle('折线图展示')
self.setGeometry(50, 50, 800, 600)
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
```
在这个例子中,我们创建了一个MainWindow类,该类继承自QMainWindow。在__init__方法中,我们创建了一个Matplotlib Figure对象和一个Matplotlib Axes对象,并使用np.linspace函数生成一些数据。然后,我们使用Axes.plot方法绘制了折线图。接下来,我们使用FigureCanvas将Figure嵌入到GUI界面中,并将其设置为QWidget的主布局。最后,我们将QWidget设置为主窗口的中央Widget,并设置了主窗口的标题和大小。在运行程序时,将会展示一个简单的折线图界面。
阅读全文