我想通过PyQt5引入一个文本文件,并用数据值绘制一个图形。
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QAction, QFileDialog
from PyQt5.QtGui import QIcon
import numpy as np
import matplotlib.pyplot as plt
class MyApp(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.textEdit = QTextEdit()
self.setCentralWidget(self.textEdit)
self.statusBar()
openFile = QAction(QIcon('folder.png'), 'Open', self)
openFile.setShortcut('Ctrl+O')
openFile.setStatusTip('Text.txt')
openFile.triggered.connect(self.show)
menubar = self.menuBar()
menubar.setNativeMenuBar(False)
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(openFile)
self.setWindowTitle('File Dialog')
self.setGeometry(300, 300, 300, 200)
self.show()
def show(self):
fname = QFileDialog.getOpenFileName(self, 'Open file', './')
if fname[0]:
f = open(fname[0], 'r')
with f:
data = f.read()
data2=np.array(data)
x=data2[1:,0]
y=data2[1:,1]
plt.plot(x,y)
plt.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())
文本文件照片。
这是出现的错误:
x=data2[1:,0]
IndexError: too many indices for array: array is 0-dimensional, but 2 were indexed
3条答案
按热度按时间pengsaosao1#
使用
numpy
时,不需要编写自己的代码来从文件加载数据。使用numpy
函数来为您完成此操作。在
show()
中,我建议这样修改代码:6ioyuze22#
另一个答案向您展示了如何正确地做到这一点,因此我将解释代码中的错误。
在
data = f.read()
中,文件存储为字符串而不是数组。如果你检查它,你会看到类似x y \n1 2 \n
的东西,其中\n
是换行符。因此,data2 = np.array(data)
最终创建了一个包含单个字符串的numpy数组。由于数组只有一个项,因此它的维度为0,而不是您预期的两个维度。
p5cysglq3#
看看你是否有双重预测。我在使用pandas时遇到了这个错误