Не получается обновить/удалить график pyqtgraph и вывести данные по времени на график из SQlite3

Выделяю через checkbox необходимые параметры которые уже записаны в базу данных sqlite3. Нажимаю на кнопку обновить график и в начале удаляем все что там было и рисуем новое. Таким способом решил сбрасывать старые графики. Как удалять полностью график или определенный?

Когда загружаются данные по выделенным параметрам checkbox из базы данных sqlite3 есть возможность вытащить точное время и дату. Как можно на графике масштабировать значения опираясь и отображая дату из базы данных sqlite3 ?

Программировать начал не давно и буду рад ЛЮБОМУ совету. Ищу хороший источник pyqtgraph с понятными объяснением и примерами :)

# -*- coding: utf-8 -*-
# Подключение, объявление библиотек и модулей. Ничего не удалять!
from PyQt5 import QtCore, QtGui, QtWidgets, uic  # подключение библиотек ядра, интерфейса, различных виджетов
from PyQt5.QtWidgets import QMainWindow          # подключение модуля главного окна из библиотеки
from SOG_DESIGNER import Ui_MainWindow
from SOG_DESIGNER_WindowOneGraf_SAU_TKA1 import Ui_MainWindowOneGrafSAUTKA1   # и преобразованого из раcширения .ui в .py
from datetime import timedelta

import datetime
import sqlite3
import sys                    # подключение модулей работы с временем, базой данных, системой
import pyqtgraph as pg        # подключение модуля графики
import numpy as np


# Функция чтения ОБРАБОТАННЫХ данных из базы данных СОГ таблицы САУ ТКА №1
def sqlite3_read_db_SAU_TKA1_processed_NGG():   # функции передали значение название базы данных и таблицы
    DBread = sqlite3.connect('Test_SAU_TKA1_processed.db')  # присваиваем ссылку на базу данных
    cur = DBread.cursor()   # подключаем курсор для обращения к элементам базы
    cur.execute("SELECT NGG FROM Data_processed")
    data = cur.fetchall()   # вытаскиваем и присваивает все данные по запросу выше
    clear_data = []                     # новый массив данных для чистых данных
    for element in data:                # перезаписываем данные из типа () в новый тип []
        clear_data.append(element)
    data = clear_data                   # присваеваем данные
    del(clear_data)                     # чистим массив для чистки данных
    DBread.commit()     # закрываем таблицу САУ ТКА №1
    cur.close()         # закрываем курсор для работы с базой данных СОГ
    DBread.close()      # закрываем базу данных СОГ
    return data         # возвращаем данные полученые по запросу в данной функции

# Функция чтения ОБРАБОТАННЫХ данных из базы данных СОГ таблицы САУ ТКА №1
def sqlite3_read_db_SAU_TKA1_processed_t4g():   # функции передали значение название базы данных и таблицы
    DBread = sqlite3.connect('Test_SAU_TKA1_processed.db')  # присваиваем ссылку на базу данных
    cur = DBread.cursor()   # подключаем курсор для обращения к элементам базы
    cur.execute("SELECT t4g FROM Data_processed")
    data = cur.fetchall()   # вытаскиваем и присваивает все данные по запросу выше
    clear_data = []                     # новый массив данных для чистых данных
    for element in data:                # перезаписываем данные из типа () в новый тип []
        clear_data.append(element)
    data = clear_data                   # присваеваем данные
    del(clear_data)                     # чистим массив для чистки данных
    DBread.commit()     # закрываем таблицу САУ ТКА №1
    cur.close()         # закрываем курсор для работы с базой данных СОГ
    DBread.close()      # закрываем базу данных СОГ
    return data         # возвращаем данные полученые по запросу в данной функции

# Функция чтения ОБРАБОТАННЫХ данных из базы данных СОГ таблицы САУ ТКА №1
def sqlite3_read_db_SAU_TKA1_processed_vibgg():   # функции передали значение название базы данных и таблицы
    DBread = sqlite3.connect('Test_SAU_TKA1_processed.db')  # присваиваем ссылку на базу данных
    cur = DBread.cursor()   # подключаем курсор для обращения к элементам базы
    cur.execute("SELECT vibgg FROM Data_processed")
    data = cur.fetchall()   # вытаскиваем и присваивает все данные по запросу выше
    clear_data = []                     # новый массив данных для чистых данных
    for element in data:                # перезаписываем данные из типа () в новый тип []
        clear_data.append(element)
    data = clear_data                   # присваеваем данные
    del(clear_data)                     # чистим массив для чистки данных
    DBread.commit()     # закрываем таблицу САУ ТКА №1
    cur.close()         # закрываем курсор для работы с базой данных СОГ
    DBread.close()      # закрываем базу данных СОГ
    return data         # возвращаем данные полученые по запросу в данной функции

# Класс основного окна
class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None, *args, **kwargs):   # метод инициализации класса и объявления родителей
        QMainWindow.__init__(self, parent)  # инициализация модуля библиотеки для работы с его методами
        self.setupUi(self)  # инициализация интерфейса
        self.pushButton_one_graf_sau_tka1.clicked.connect(self.Open_WindowOneGraf_SAU_TKA1)
# Открывает окно с ГРАФИКОМ
    def Open_WindowOneGraf_SAU_TKA1(self):
        self.Open_WinOneGraf_SAU_TKA_1 = Window_SAU_TKA1()
        self.Open_WinOneGraf_SAU_TKA_1.show()

# Класс окна графика
class Window_SAU_TKA1(QMainWindow, Ui_MainWindowOneGrafSAUTKA1):
    def __init__(self, parent=None, *args, **kwargs):   # метод инициализации класса и объявления родителей
        QMainWindow.__init__(self, parent)  # инициализация модуля библиотеки для работы с его методами
        self.setupUi(self)  # инициализация интерфейса
        self.pushButton_plot_db.clicked.connect(self.Graf_plot_db)      # вызываем метод при нажатиии на кнопку

# Метод проверяет какие параметры выгружать из базы и отображать на графике
    def Graf_plot_db(self):
        ###########################
        delItem = self.GraphWidget.getPlotItem()        # ЗДЕСЬ пытаюсь присвоить элемент графика и очистить
        self.GraphWidget.removeItem(delItem)            # ТУТ ничего не получилось :(
        ###########################
        
        if self.checkBox_NGG.checkState():              # если checkBox выбран то рисуем по этому параметру график
            NewDataNGG = sqlite3_read_db_SAU_TKA1_processed_NGG()   # Выгружаем данные параметра NGG из sqlite3(можно время и дату выгрузить)
            x = []      # для массива данных оси Х
            y = []      # для массива данных оси У
            count = 0   # счетчик для элементов массива
            for i in NewDataNGG:        # цикл для того чтобы пробежать по элементам массива и удалить лишнее символы
                Y1_strNGG = NewDataNGG[count]   # пример данных ('1002',)
                Str_element1 = str(Y1_strNGG)[2:len(Y1_strNGG) - 4]     # пример данных после вырезания 1002
                #############################################
                x.append(count)     # ТУТ добавляем значение в массив(должно быть ВРЕМЯ из БАЗЫ как то отмасштабировано)
                #############################################
                y.append(int(Str_element1))     # добавляем значение из базы данных обработанное от символов
                if len(NewDataNGG) == count:    # условие выхода из цикла при переполнении счетчика
                    break
                count = count + 1       # счетчик для массива
            self.plot((x), (y))         # вызываем метод для отображения графика по координатам из базы

        if self.checkBox_t4g.checkState():
            NewDatat4g = sqlite3_read_db_SAU_TKA1_processed_t4g()
            x = []
            y = []
            count = 0
            for i in NewDatat4g:
                Y1_strNGG = NewDatat4g[count]
                Str_element1 = str(Y1_strNGG)[2:len(Y1_strNGG) - 4]
                x.append(count)
                y.append(int(Str_element1))
                if len(NewDatat4g) == count:
                    break
                count = count + 1
            self.plot((x), (y))

        if self.checkBox_vibgg.checkState():
            NewDatavibgg = sqlite3_read_db_SAU_TKA1_processed_vibgg()
            x = []
            y = []
            count = 0
            for i in NewDatavibgg:
                Y1_strNGG = NewDatavibgg[count]
                Str_element1 = str(Y1_strNGG)[2:len(Y1_strNGG) - 4]
                x.append(count)
                y.append(int(Str_element1))
                if len(NewDatavibgg) == count:
                    break
                count = count + 1
            self.plot((x), (y))

# Метод отображения графика по координатам
    def plot(self, X, Y):
        self.GraphWidget.plot(X, Y)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    GeneralWindow = MainWindow()
    GeneralWindow.show()
    sys.exit(app.exec_())

введите сюда описание изображения введите сюда описание изображения

тут ниже два подключаемых модуля и база которую можно опрашивать Архив с модулями и базой


Ответы (0 шт):