matplotlib如何嵌入pyqt5柱状图,请举例说明
时间: 2023-05-28 21:03:41 浏览: 137
以下是一个简单的matplotlib嵌入pyqt5的柱状图示例:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QSizePolicy, QWidget, QVBoxLayout
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
class MyMplCanvas(FigureCanvas):
"""FigureCanvas的一个子类,用于将matplotlib绘制的图形显示在PyQt5应用程序中"""
def __init__(self, parent=None, width=5, height=4, dpi=100):
fig = Figure(figsize=(width, height), dpi=dpi)
self.axes = fig.add_subplot(111)
FigureCanvas.__init__(self, fig)
self.setParent(parent)
FigureCanvas.setSizePolicy(self, QSizePolicy.Expanding, QSizePolicy.Expanding)
FigureCanvas.updateGeometry(self)
class MyMainWindow(QMainWindow):
"""主窗口类"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('Matplotlib in PyQt5')
# 创建一个Matplotlib的图形对象并将其添加到主窗口的布局中
sc = MyMplCanvas(self, width=5, height=4, dpi=100)
self.setCentralWidget(sc)
# 绘制柱状图
x = [1, 2, 3, 4, 5]
y = [10, 8, 6, 4, 2]
sc.axes.bar(x, y)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyMainWindow()
w.show()
sys.exit(app.exec_())
```
在此示例中,我们创建了一个继承自FigureCanvas的子类MyMplCanvas,它可以在PyQt5应用程序中显示matplotlib绘制的图形。然后我们创建了一个继承自QMainWindow的主窗口类MyMainWindow,它包含了一个MyMplCanvas对象,用于显示柱状图。
在MyMainWindow类的构造函数中,我们创建了一个MyMplCanvas对象,并将其设置为中央窗口小部件。然后我们调用MyMplCanvas对象的axes属性来绘制柱状图。在这个例子中,我们绘制了一个简单的柱状图,其中x轴的值为1到5,y轴的值为10到2。
阅读全文