2014-01-19 3 views
1

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

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

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

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 в config. Обычно pyplot - это уровень совместимости для Matlab для удобства, попробуйте научиться делать это с помощью объектно-ориентированного способа.

fig,ax = subplots() 
ax.plot(range(4)) 
ax.set_ylabel('my label') 
... 
+0

Я бы использовал фразу '' OO'-way '' не 'matplotlib way'. – tacaswell

+0

Да, спасибо, Мозг устал после трансатлантического полета. – Matt

Смежные вопросы