elemen如何从两个numy数组元素插入1d数组

2024-09-27 19:23:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着策划。我需要x轴作为时间,我写这个方法。但我不能做出这样的结果 rtctime = np.array([17.02.31, 17.02 37, 17.02.38]) 如何按元素组合rtchour、rtcminute、rtcsond数组,当我合并数组时,在图形的x轴上没有问题

from matplotlib.backends.backend_qt5agg import (NavigationToolbar2QT as NavigationToolbar)

import numpy as np
import traceback

class Main(QtWidgets.QMainWindow, Ui_MainWindow):
    rtcdate = np.array([])
    rtchour = np.array([])
    rtcminute = np.array([])
    rtcsecond = np.array([])
    rtctime = np.array([])

    data = np.array([])
  def __init__(self,parent=None):
        super(Main, self).__init__(parent)
        self.setupUi(self)

        self.DataReader()

        self.pushButton_data.clicked.connect(self.Graph)

    def DataReader(self):

        graph_data = open("DATA.TXT", "r").read()
        downLines = graph_data.split('\n')

        for line in downLines:
            try:
                if len(line) > 1:
                 valuedate, valuehour,valueminute, valuesecond,\
                 value= line.split(' ')

                 self.rtcdate = np.append(self.rtcdate,valuedate)
                 self.rtchour = np.append(self.rtchour,valuehour)
                 self.rtcminute = np.append(self.rtcminute,valueminute)
                 self.rtcsecond = np.append(self.rtcsecond,valuesecond)
                 self.data = np.append(self.data,value)

            except:
             print("Error:")
             print(traceback.format_exc())
             continue
    def EKGDatas(self):

        self.MatplotWidget.canvas.axes.clear()
        self.MatplotWidget.canvas.axes.plot(self.rtcsecond, self.ekgdata)
        self.MatplotWidget.canvas.axes.tick_params(axis='x', rotation=70)
        self.MatplotWidget.canvas.draw()
       self.window.show()

if __name__== '__main__':
    import sys
    App = QtWidgets.QApplication(sys.argv)
    PrecautionApp = Main()
    PrecautionApp.show()
    sys.exit(App.exec())
# ------------------------------------------------------
# -------------------- matplotwidget.py --------------------
# ------------------------------------------------------
from PyQt5.QtWidgets import *


from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas

from matplotlib.figure import Figure


class MatplotWidget(QWidget):

    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        self.canvas = FigureCanvas(Figure())

        vertical_layout = QVBoxLayout()
        vertical_layout.addWidget(self.canvas)

        self.canvas.axes = self.canvas.figure.add_subplot(111)
        self.setLayout(vertical_layout)

数据.TXT

30/07/2019 17 02 31 129
30/07/2019 17 02 37 1
30/07/2019 17 02 38 154
30/07/2019 17 02 39 147

我在做一个大项目。项目中有pyqt5设计器代码。 我的目标是根据data.txt文件中的日期和时间绘制数据。完成后,我将分析图表。因此,根据我的研究,我已经达到需要将我的系列转换为numpy。我将把它合并到一个数组中,在图形的x轴上显示它(小时、分钟、秒),并将它发送到plot函数


Tags: fromimportselfdatainitdefnparray
1条回答
网友
1楼 · 发布于 2024-09-27 19:23:44

一个选项是转换为datetime对象,该对象matplotlib可用于打印。您可能需要重新考虑代码的结构,但这将大大简化您的工作,并确保在绘制数据时,从59分钟过渡到1小时时,坐标轴是一致的

像这样的东西会给你你的时间清单:

import datetime as dt

graph_data = open("DATA.TXT", "r").read()
downLines = graph_data.split('\n')

timedata = []
for line in downLines:
    if len(line) > 1:
        timedata.append(dt.datetime.strptime(line,'%d/%m/%Y %H %M %S %f'))


print(timedata)
#[datetime.datetime(2019, 7, 30, 17, 2, 31, 129000), datetime.datetime(2019, 7, 30, 17, 2, 37,100000), datetime.datetime(2019, 7, 30, 17, 2, 38, 154000), datetime.datetime(2019, 7, 30, 17, 2, 39, 147000)]

相关问题 更多 >

    热门问题