matplotlib 图表如何集成到pyqt,程序示例
时间: 2023-05-12 12:03:18 浏览: 140
增量控制按钮-利用pyqt5+matplotlib 绘制静态/动态图的实现代码
可以使用Qt的QChart模块来集成matplotlib图表到pyqt程序中。以下是一个示例程序:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QSizePolicy, QVBoxLayout, QWidget
from PyQt5.QtChart import QChart, QChartView, QLineSeries
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建一个matplotlib图表
fig = Figure()
ax = fig.add_subplot(111)
ax.plot([1, 2, 3, 4, 5], [10, 5, 20, 15, 25])
# 创建一个Qt图表
chart = QChart()
chart.legend().hide()
# 创建一个Qt图表视图
chart_view = QChartView(chart)
chart_view.setRenderHint(QPainter.Antialiasing)
# 创建一个matplotlib图表画布
canvas = FigureCanvas(fig)
canvas.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
canvas.updateGeometry()
# 将matplotlib图表画布添加到Qt图表视图中
chart_view.setRubberBand(QChartView.RectangleRubberBand)
chart_view.setDragMode(QGraphicsView.ScrollHandDrag)
chart_view.setSceneRect(canvas.rect())
chart_view.setScene(canvas.figure.patch)
# 创建一个Qt主窗口
central_widget = QWidget()
layout = QVBoxLayout(central_widget)
layout.addWidget(chart_view)
self.setCentralWidget(central_widget)
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
```
这个程序创建了一个包含matplotlib图表的Qt主窗口。它使用了Qt的QChart模块来创建一个Qt图表,然后将matplotlib图表画布添加到Qt图表视图中。最后,它将Qt图表视图添加到Qt主窗口中。
阅读全文