Найти - Пользователи
Полная версия: Как наиболее правильно работать с графиками в PyCharm?
Начало » Python для новичков » Как наиболее правильно работать с графиками в PyCharm?
1
Renaldas
Мои умения работать с графиками ограничиваются только следующим или похожим кодом. Собираю в список, в который потом на каждой итерации программы добавляю переменную, и откладываю этот все увеличивающийся список (можно ли как-то избежать строки объявления пустого списка profitability_list = вне функции?).
Проблема в том, что в PyCharm, если откладывать так несколько тысяч раз, то постепенно съедаются гигабайты памяти, в окне графика остается каждый файл после каждой итерации (я так понимаю, что справа в окне на каждой итерации добавляющийся новый график просто остается в рабочей памяти). Что я делаю неправильно? Как заставить программу не держать все эти тысячи файлов в памяти, а оставлять только последний?


 def profitability_graph():
    pyplot.clf()
    pyplot.close()
    pyplot.figure(figsize=(12, 12))
    pyplot.xlabel('Time')
    pyplot.ylabel('RVN profitability')
    pyplot.plot(profitability_list, color='k', linewidth=1, label='RVN profitability')
    pyplot.legend()
    pyplot.grid(True)
    pyplot.show()
profitability_list = []
def main():
    difficulty = get_rvn_difficulty()
    rvn_btc_exchange_rate = get_rvn_btc_exchange_rate()
    profitability = calculate_profitability(rvn_btc_exchange_rate, difficulty)
    profitability_list.append(profitability)
    profitability_graph()
    print(profitability)
for iteration in range(1000):
    main()
    time.sleep(60)

Похоже, рано мне за Питон, я даж картинку вставить не умею … https://ibb.co/k9P8BWC
py.user.next
Попробуй .close('all')
https://matplotlib.org/2.0.2/api/pyplot_api.html#matplotlib.pyplot.close

Пример
  
import matplotlib.pyplot
 
def f(lst):
    matplotlib.pyplot.plot(lst)
    matplotlib.pyplot.show()
    matplotlib.pyplot.close('all')
 
for i in range(10):
    g = [(i, i) for i in range(i + 2)]
    f(g)

Renaldas
можно ли как-то избежать строки объявления пустого списка profitability_list = вне функции?
В примере я передаю данные для построения графика в функцию через аргумент. Возможно, тебе это поможет. Может быть, это не поможет тебе, потому что цель твоя тоже неточна.

Если болит голова, то её можно мазать снаружи обезбаливающим или зелёнкой. И голова даже может перестать болеть после этого. Но это не значит, что мазать голову зелёнкой или обезбаливающим для купирования головной боли яляется правильной стратегией лечения.

Чтобы вылечить что-то, нужно правильно причину заболевания определить. Только после этого можно назначить лечение. Вот здесь то же самое. Чтобы что-то сделать, нужно сначала правильно задачу поставить. Только после этого можно распланировать решение. И часто задача разбивается на подзадачи, которые разбиваются потом дальше на подзадачи, которые разбиваются потом дальше на подзадачи и так далее. Так если ты на самом верху что-то неправильно определил - неправильно поставил задачу - то оно дальше пойдёт тоже неправильно. Поэтому начинают сначала с цели. Что ты пытаешься сделать точно. Только после этого под эту цель ставят задачу. И потом ты уже с этой задачей работаешь вот этим описанным образом.

Я к тому, что у тебя проблема не в переполнении, а в том, что сначала нужно убедиться, что у тебя график вообще правильно строится, даже если бы там не было никакого переполнения.
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