Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
6 / 5 / 1
Регистрация: 27.06.2017
Сообщений: 249

Как перерисовать график в matplotlib?

30.10.2020, 14:44. Показов 1886. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть программа,которая рисует траекторию полёта снаряда. При запуске программы всё работает хорошо,но мне надо этот график перерисовывать.Пробовал очищать график,удалять - ничего не помогало

Подскажите,как перерисовать график?Функция draw1 должна как раз его перерисовывать

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import sys 
from PyQt5 import QtWidgets,QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QVBoxLayout, QSizePolicy, QMessageBox, QWidget, QPushButton
from PyQt5.QtGui import QIcon
import design  
import requests
import qdarkstyle
import os
import math
import ctypes
import random
import seaborn as sns
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
plt.ion()
V0=10 #Нач скорость
a=45 #Угол
m=1 #Масса
k=1 #Коэфф сопротивления воздуха
 
class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self) 
        self.setWindowIcon(QIcon('science.png')) 
        m = PlotCanvas(self, width=7, height=5.5)
        m.move(400,10)
        self.pushButton.clicked.connect(self.draw1)
 
    def draw1(self):
        global V0
        V0=100
        PlotCanvas()
        
        
class PlotCanvas(FigureCanvas):
 
    def __init__(self, parent=None, width=5, height=4, dpi=100):
        fig = Figure(figsize=(width, height), dpi=dpi)
        FigureCanvas.__init__(self, fig)
        self.setParent(parent)
        rect = fig.patch 
        rect.set_facecolor('#19232d')
        fig.clear()
        FigureCanvas.setSizePolicy(self,
                QSizePolicy.Expanding,
                QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)
        self.plot()
 
    def Lenght(self,V0, a, m, k): #Расчёт траектории (совокупность координат (x,y) )
        print(V0, a, m, k)
        V_x = [V0 * math.cos(a * math.pi / 180)]
        V_y = [V0 * math.sin(a * math.pi / 180)]
        x_m = [0]
        y = [0]
        i = 0
        dt = 0.0001
        g = 9.8195
        while y[i] >= 0:
            V_x.append(V_x[i] - k * V_x[i] * dt / 1)
            V_y.append(V_y[i] - (g + k * V_y[i] / 1) * dt)
            x_m.append(x_m[i] + V_x[i] * dt)
            y.append(y[i] + V_y[i] * dt)
            i += 1
        return x_m, y
    def plot(self):
        global V0, a, m, k,line1
        x_m, y = self.Lenght(V0, a, m, k) 
        ax = self.figure.add_subplot(111) 
        #Косметика графика
        rect = ax.patch
        rect.set_facecolor('#19232d')
        ax.grid()  
        ax.tick_params(axis='x', colors='white')
        ax.tick_params(axis='y', colors='white')
        ax.set_xlabel('Путь', fontsize=20, color='#778899')
        ax.set_ylabel('Высота', fontsize=20, color='#778899')
       #Отрисовка
        ax.plot(x_m, y, color="#ffab03")
       
        self.draw()
        print(1)
 
def main():
    app = QtWidgets.QApplication(sys.argv)  
    window = ExampleApp()  
    app.setStyleSheet(qdarkstyle.load_stylesheet(qt_api='pyqt5'))
    window.show()  
    app.exec_()  
 
if __name__ == '__main__':  
    main()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.10.2020, 14:44
Ответы с готовыми решениями:

Matplotlib и PyQt5 Как отобразить график ?
Привет всем! Прошу помощи! Есть график который выводится по средствам matplotlib'a в Jupytere. fig = plt.figure(figsize=(20, 10)) ...

Как обновлять график matplotlib в QWidget?
Доброго времени суток! Я делал школьный проект на python И всё бы ничего, но у меня не получается обновлять график функции в своей...

Как построить график линии уровня matplotlib?
День добрый, есть у меня есть три файла, в которых хранятся значения x,y,z. Как мне построить график линии уровня из данных, хранящихся в...

1
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
02.11.2020, 10:25
Для начала - избавьтесь от глобалок.
По структуре программы у вас каша. PlotCanvas() создаёт класс. Создаёт объект-картинку вместе с рисованием графика. Разделите.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.11.2020, 10:25
Помогаю со студенческими работами здесь

Как удалить график matplotlib в PyQt5
Есть следующее задание: Задача 1. В созданном окне вам необходимо построить график функций на осях x и y по заданной формуле: (формула). ...

Как на форму QT Designer вывести график из matplotlib?
Добрый день, пытаюсь добавить на форму QT Designer график из matplotlib. Для этого использую функцию из контекстного меню promoted to ...

Правильно перерисовать график flot.jquery
Здравствуйте. На страничке, по умолчанию строится график, с помощью плагина flot.jquery var options = { xaxis: {...

Chart. Перерисовать график с новыми данными
Я вывел график в чарте. массив значений у меня полностью изменился. как мне теперь перерисовать его?

График matplotlib
Доброго времени суток. Нужна помощь, не понимаю, почему данные в график постоянно прибавляются, а не обновляются, в итоге график имеет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru