pyqt5 + matplotlib绘制折线图
时间: 2023-09-12 07:05:59 浏览: 159
如果你想在 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 类。然后,我们显示了窗口并启动了应用程序的事件循环。
阅读全文