Известна ли проблема с matplotlib.pyplot.subplots () clear и clf kwargs? - PullRequest
0 голосов
/ 30 января 2019

Я запускаю сценарий, который создает дескрипторы фигур и осей для одного набора осей в пределах одной фигуры, используя:

import matplotlib.pyplot as plt
fig, ax = plt.subplots(num=1, clear=True, clf=True)

с использованием автоматической графики (т.е. фигуры отображаются в своем собственном окне) иУ меня две проблемы:

  1. На самом деле, когда я бегу, фигура не проясняется - метки оси и метки становятся темнее с каждым прогоном.Жизнь становится действительно веселой, если я изменю код на:

    import matplotlib.pyplot as plt
    fig, ax = plt.subplots(num=1, clear=True, clf=True)
    fig.tight_layout()
    

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

  2. Если я удаляю рисунок и повторно запускаю код, я получаю сообщение об ошибке:

    __init__() got an unexpected keyword argument 'clear'
    

    или

    __init__() got an unexpected keyword argument 'clf'
    

Все работает нормально, если я бегу:

import matplotlib.pyplot as plt
fig, ax = plt.subplots(num=1)
fig.clf() 
fig, ax = plt.subplots(num=1, clear=True, clf=True)
fig.tight_layout()

но это кажется повторяющимся в том смысле, что кажется ... смею ли я сказать ... не пифонично?

Для полноты: использование Anaconda Spyder для Python 3.6 на 64-битной Windows-машине;завтра попробую разные версии и ОС.

Редактировать: похоже, проблема связана с matplotlib 2.2.3, поскольку не возникает с matplotlib 3.0.2.

1 Ответ

0 голосов
/ 30 января 2019

Из документации https://matplotlib.org/api/_as_gen/matplotlib.pyplot.subplot.html

Оболочка Figure.add_subplot с разницей в поведении, объясненной в разделе заметок.

Глядя на исходный код, clear и clf являются методами Figure, поэтому при первом вызове subplots() объект Figure еще не существует, он не может вызвать clear или clf.Тем не менее, второй вызов и далее объект существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...