Найти - Пользователи
Полная версия: matplotlib
Начало » Python для новичков » matplotlib
1 2
mma689
Доброго времени суток!
Пишу свою игру “Жизнь”. Весь функционал написан, работает… Вопрос возникает в графике. Задумал отрисовать все это с помощью matplotlib, но не могу разобраться нормально. Подскажите пожалуйста как мне анимировать картинку? Или может использовать другое решение?
4kpt_II
pygame
JOHN_16
mma689
matplotlib совсем для другого. Это условная реплика функционала MATLAB для отрисовки графиков,а не графики
mma689
import numpy as np
import matplotlib.pyplot as plt
n=10
fig = plt.figure(num=1, dpi=100, facecolor='w', edgecolor='w')
plt.ion()
while(True):
    a=np.random.randint(2,size=(n,n))
    for i in range(0,n):
        for j in range(0,n):
            if(a[i][j]==0):
                im=plt.plot(i,j,'ro')
            else:
                im=plt.plot(i,j,'bs')
    plt.draw()
    fig.clear()
Но в чем проблема?
а)Утекает память.
б)После нескольких итераций виснет оО
JOHN_16
mma689
а) я не вижу утечки памяти

б) код входит в бесконечный цикл (while True) который выполняет отрисовку одного и того же (!) набора данных. Сам процес отрисовки ресурсозатратный. поэтому получается что программа “виснит”, ведь по сути она выполняет ровно то что ей вы задали - бекончено рисовать один и тот же набор данных
mma689
а)Хммм….

б)Почему одного и того же? С каждым проходом по циклу while генерируется новый массив => происходит разная отрисовка. Или важна суть именно новой точки, а не ее цвета?
JOHN_16
mma689
прошу прощения, был не прав. Дело не в наборах данных, а в самом matplotlib, “виснит” даже не он, а окно которое пытается отрисовать все это. Попробуйте запустить ваш код и передвинуть окно - оно “зависнет”.
Так что как то так.
mma689
JOHN_16
Вот да… И в чем же проблема? Я так понимаю функции типа animation позволяют рисовать, но подходит ли это для цикла типа While(True)?
Или не могли бы Вы подсказать какое решение? Я частично уже потыкался в pygame, успех кое какой есть, но как минимум надо обточить алгоритм, ибо там выдает очень маленьких фпс.
JOHN_16
mma689
я не подскажу, могу лишь посоветовать посмотреть открытые проекты (игры) сделанные на pygame. Возможно подчеркнете для себя много полезного. В целом, насколько я видел, недостатка быстродействия там для подобных задач там не наблюдается.
mma689
JOHN_16
Жаль, но спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB