python - 在pyqt5小部件Python中显示matplot图
问题描述
我正在创建一个pyqt5
需要显示matplotlib
图表的应用程序。我正在关注这个来自 youtube 的视频。在这个视频中,他首先在 qt Designer 中创建了一个窗口,并添加了一个用于显示图形的小部件。下面是代码:
他为 matplotlib 小部件创建了这个类:
class MatplotlibWidget(QWidget):
def __init__(self, parent=None):
super(MatplotlibWidget, self).__init__(parent)
self.figure = Figure()
self.canvas = FigureCanvasQTAgg(self.figure)
self.axis = self.figure.add_subplot(111)
self.layoutvertical = QVBoxLayout(self)
self.layoutvertical.addWidget(self.canvas)
然后这就是它的使用方式:
self.matplotlibwidget = MatplotlibWidget()
self.layoutvertical = QVBoxLayout(self.home_ui.total_persons_per_gallery_widget)
self.layoutvertical.addWidget(self.matplotlibwidget)
self.matplotlibwidget.axis.clear()
x = np.random.random(10)
y = np.random.random(10)
txts = ["P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "P10"]
self.matplotlibwidget.axis.scatter(x, y)
for index, txt in enumerate(txts):
self.matplotlibwidget.axis.annotate(txt, (x[index], y[index]))
self.matplotlibwidget.canvas.draw()
上面的代码工作正常并显示在下图
在上面的 coe 中class MatplotlibWidget(QWidget)
,我无法理解这一行self.axis = self.figure.add_subplot(111)
。
我想创建一个条形图,我将代码更新为以下内容:
self.matplotlibwidget = MatplotlibWidget()
self.layoutvertical = QVBoxLayout(self.home_ui.total_persons_per_gallery_widget)
self.layoutvertical.addWidget(self.matplotlibwidget)
objects = ('Python', 'C++', 'Java', 'Perl', 'Scala', 'Lisp')
y_pos = np.arange(len(objects))
performance = [10, 8, 6, 4, 2, 1]
self.matplotlibwidget.bar(y_pos, performance, align='center', alpha=0.5)
self.matplotlibwidget.xticks(y_pos, objects)
self.matplotlibwidget.ylabel('Usage')
self.matplotlibwidget.title('Programming language usage')
self.matplotlibwidget.canvas.draw()
它给了我一个错误,即 matplotlibwidget 没有栏。谁能告诉我如何更新代码以显示条形图或任何其他图表。请帮忙。谢谢
解决方案
推荐阅读
- rubymotion - NDK 错误:Android 安装
- php - 如何将 HAM Maidenhead Grid Squares 转换为经纬度?
- cytoscape.js - 我正在使用 cytoscape 设置“text-opacity:0”的样式,但它不起作用
- android - 编译 Flutter 时出现“任务 ':app:packageDebug' 执行失败 > 无法生成 v1 签名”异常
- swift - 在 SwiftUI 中不断重复动作
- javascript - 如何在 Chart.js 的工具提示中键入字符串?
- sass - 不兼容的单位:'rem' 和 'px' - Bootstrap 4.3.1
- python - 退出代码 0,无错误,无输出
- sql - 如何从周期列中选择值作为行?
- reactjs - 使用 redux-observable 调度多个操作