Hold не работает для pyplot

У меня проблема с использованием pyplot. Я новичок в Python, так что извините, если я делаю очевидную ошибку.

После того, как я построил что-то, используя pyplot, он показывает график, но когда я попытаюсь добавить, например, ylabel, он не будет обновлять текущий график. Это приводит к новому графику с только ylabel, ранее не введенной информации. Так что мне кажется, что это проблема с распознаванием текущего графика / оси, но ishold дает истинное утверждение.

Моя установка Python 2.7 в Python(x,y). Проблема возникает как в IDE Spyder, так и в консоли Qy IPython. Однако этого не происходит в обычной консоли IPython (которая, по определению, не является интерактивной, но все включено при использовании show(). Когда я отключаю интерактив в консоли Spyder/Qt, она ничего не показывает после использования show () команда).

import matplotlib.pyplot as plt

plt.plot([1,2,3,4])
Out[2]: [<matplotlib.lines.Line2D at 0x78ca370>]


plt.ylabel('test')
Out[3]: <matplotlib.text.Text at 0x5bd5990>


plt.ishold()
Out[4]: True


matplotlib.get_backend()
Out[6]: 'module://IPython.kernel.zmq.pylab.backend_inline'

Надеюсь, у кого-то из вас есть вклад. Благодарю.

1 ответ

Решение

Это одна из причин, по которым InlineBackend должен вести себя не так, как другие бэкэнды, иначе вы будете иметь вид утечки памяти. Вы должны держать явный указатель на число и / или набор matplotlib close_figure в False в конфиг. Обычно pyplot это слой совместимости для Matlab для удобства, попробуйте научиться делать, используя объектно-ориентированный способ.

fig,ax = subplots()
ax.plot(range(4))
ax.set_ylabel('my label')
...
Другие вопросы по тегам