在现有主窗口上的PyQt GUI上选择组合框选项时显示图形

问题描述 投票:0回答:1

因此,我试图基本上建立某种工具,使我可以从数据框中选择一列,当我从组合框中选择该列时,应在同一窗口中显示该列的分布图。 。我不知道该怎么办...

这是我的组合框的外观:

enter image description here

我需要能够在同一窗口中显示图形(分布)。

我该怎么办?

python user-interface matplotlib pyqt5 distribution
1个回答
1
投票
这里是一个示例,说明如何使用组合框在同一窗口的数据框中的列中绘制数据。

from PyQt5 import QtWidgets from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas import matplotlib.pyplot as plt import pandas as pd import os class Widget(QtWidgets.QWidget): def __init__(self, parent=None): super().__init__(parent) self.combo = QtWidgets.QComboBox() self.combo.addItem("Choose a field") self.button = QtWidgets.QPushButton('Read csv file') # axes and widget for plotting and displaying the figure self.fig, self.ax = plt.subplots() self.figure_widget = FigureCanvas(self.fig) plt.tight_layout() # set up layout vlayout = QtWidgets.QVBoxLayout(self) hlayout = QtWidgets.QHBoxLayout() hlayout.addWidget(self.combo) hlayout.addWidget(self.button) hlayout.addStretch(2) vlayout.addLayout(hlayout) vlayout.addWidget(self.figure_widget) self.button.clicked.connect(self.read_data) self.combo.currentTextChanged.connect(self.field_changed) def read_data(self): dialog = QtWidgets.QFileDialog(self, directory=os.curdir, caption='Open data file' ) dialog.setAcceptMode(QtWidgets.QFileDialog.AcceptOpen) dialog.setFileMode(QtWidgets.QFileDialog.ExistingFile) if dialog.exec(): # read data and add columns to combo box file = dialog.selectedFiles()[0] self.data = pd.read_csv(file) self.combo.clear() self.combo.addItem("Choose a field") for field in self.data.columns: self.combo.addItem(field) self.combo.setCurrentIndex(0) def field_changed(self, field): self.ax.clear() if field in self.data.columns: self.data.plot(y=field, ax=self.ax) self.ax.set_ylabel(field) self.ax.set_xlabel('index') plt.tight_layout() self.fig.canvas.draw() if __name__ == '__main__': app = QtWidgets.QApplication([]) widget = Widget() widget.show() app.exec()

© www.soinside.com 2019 - 2024. All rights reserved.