Stepashka20
@Stepashka20
(☞゚ヮ゚)☞

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

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

Подскажите,как перерисовать график?Функция draw1 должна как раз его перерисовывать
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) 

        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) )
        ...
        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) 

       #Отрисовка
        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()
  • Вопрос задан
  • 1718 просмотров
Пригласить эксперта
Ответы на вопрос 2
@dmshar
То, что вы хотите сделать называется "анимированный график".
Анимированный график в Matplotlib создается с помощью FuncAnimation из модуля анимации matplotlib.animation. Вот ее и используйте, а не изобретайте свой велосипед.
Ответ написан
Viktor_T2
@Viktor_T2
python developer
# --------- рисование графика -------------
figure.clf() # затереть старые графики
ax = figure.add_subplot(111) # новая область рисования графика
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы