pyqt5读取excel文件并绘折线图代码实现

时间: 2023-07-18 14:33:01 浏览: 91
以下是一个使用PyQt5读取Excel文件并绘制折线图的示例代码: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QMessageBox from PyQt5.QtChart import QChart, QChartView, QLineSeries, QValueAxis from PyQt5.QtCore import Qt from openpyxl import load_workbook class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle("读取Excel文件并绘制折线图") self.setGeometry(100, 100, 800, 600) # 添加菜单栏 menubar = self.menuBar() filemenu = menubar.addMenu('文件') openfile = filemenu.addAction('打开文件') openfile.triggered.connect(self.openFile) # 创建图表 self.chart = QChart() self.chart.setTitle("折线图") self.chart.setAnimationOptions(QChart.SeriesAnimations) # 创建图表视图并设置图表 chartview = QChartView(self.chart, self) chartview.setRenderHint(QPainter.Antialiasing) self.setCentralWidget(chartview) def openFile(self): # 弹出文件选择对话框 filename, _ = QFileDialog.getOpenFileName(self, "选择文件", "", "Excel 文件 (*.xlsx)") if filename: # 加载 Excel 文件 wb = load_workbook(filename=filename, read_only=True) sheet = wb.active # 获取数据 data = [] for row in sheet.iter_rows(min_row=2, values_only=True): data.append(row) # 绘制折线图 self.chart.removeAllSeries() for i in range(1, sheet.max_column): series = QLineSeries() series.setName(sheet.cell(row=1, column=i+1).value) for j in range(len(data)): series.append(j, data[j][i]) self.chart.addSeries(series) # 设置 X 轴和 Y 轴 axisx = QValueAxis() axisx.setRange(0, len(data)) axisx.setLabelFormat("%d") axisx.setTickCount(len(data)) axisx.setTitleText(sheet.cell(row=1, column=1).value) axisx.setGridLineVisible(True) self.chart.addAxis(axisx, Qt.AlignBottom) for series in self.chart.series(): self.chart.setAxisX(axisx, series) axisy = QValueAxis() axisy.setRange(sheet.cell(row=2, column=2).value, sheet.cell(row=sheet.max_row, column=2).value) axisy.setLabelFormat("%.1f") axisy.setTickCount(10) axisy.setTitleText(sheet.cell(row=1, column=2).value) axisy.setGridLineVisible(True) self.chart.addAxis(axisy, Qt.AlignLeft) for series in self.chart.series(): self.chart.setAxisY(axisy, series) # 更新图表视图 self.chart.legend().setVisible(True) self.chart.legend().setAlignment(Qt.AlignBottom) chartview = self.centralWidget() chartview.setChart(self.chart) if __name__ == '__main__': app = QApplication(sys.argv) mainwin = MainWindow() mainwin.show() sys.exit(app.exec_()) ``` 该程序首先创建了一个主窗口,并在菜单栏中添加了“打开文件”选项。当用户点击该选项时,程序会弹出文件选择对话框,用户可以选择一个Excel文件。 程序使用openpyxl库读取Excel文件,并将数据存储在一个二维列表中。接下来,程序遍历每一列数据,创建一个QLineSeries对象,并将其添加到图表中。程序还创建了两个QValueAxis对象,用于设置X轴和Y轴。最后,程序将图表视图更新为当前图表。 运行程序后,用户可以选择一个Excel文件并在程序中查看其折线图。

相关推荐

最新推荐

recommend-type

pyqt5 实现 下拉菜单 + 打开文件的示例代码

今天小编就为大家分享一篇pyqt5 实现 下拉菜单 + 打开文件的示例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

PyQt5实现仿QQ贴边隐藏功能的实例代码

主要介绍了PyQt5实现仿QQ贴边隐藏功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

PyQt5如何将.ui文件转换为.py文件的实例代码

主要介绍了PyQt5之如何将.ui文件转换为.py文件,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码

主要介绍了自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码,本文通过实例代码讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

Pyqt5 实现跳转界面并关闭当前界面的方法

今天小编就为大家分享一篇Pyqt5 实现跳转界面并关闭当前界面的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【实战演练】增量式PID的simulink仿真实现

# 2.1 Simulink仿真环境简介 Simulink是MATLAB中用于建模、仿真和分析动态系统的图形化环境。它提供了一个直观的用户界面,允许用户使用块和连接线来创建系统模型。Simulink模型由以下元素组成: - **子系统:**将复杂系统分解成更小的、可管理的模块。 - **块:**代表系统中的组件,如传感器、执行器和控制器。 - **连接线:**表示信号在块之间的流动。 Simulink仿真环境提供了广泛的块库,涵盖了各种工程学科,包括控制系统、电子和机械工程。它还支持用户自定义块的创建,以满足特定仿真需求。 # 2. Simulink仿真环境的搭建和建模 ### 2.
recommend-type

训练集和测试集的准确率都99%,但是预测效果不好

即使训练集和测试集的准确率都很高,但是在实际的预测中表现不佳,可能会有以下几个原因: 1. 数据质量问题:模型训练和测试的数据可能存在问题,比如数据标签错误、数据集采样不均衡、数据集中存在异常值等问题,这些问题可能会导致模型在实际预测中表现不佳。 2. 特征工程问题:模型的特征工程可能存在问题,导致模型无法很好地捕捉数据的特征,从而影响预测效果。 3. 模型选择问题:模型的选择可能不合适,比如选择的模型太简单,无法很好地拟合数据,或者选择的模型太复杂,导致过拟合等问题。 4. 超参数调整问题:模型的超参数可能没有调整到最佳状态,需要进行调整。 针对以上可能的原因,可以采取相应的措施进
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。