Как сделать IP-адрес ноутбука matplotlib

Я пытаюсь использовать ноутбук IPython на MacOS X с Python 2.7.2 и IPython 1.1.0.

Я не могу получить графику matplotlib, чтобы отображать встроенную.

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  

Я также пробовал %pylab inline и аргументы командной строки ipython --pylab=inline, но это не имеет никакого значения.

x = np.linspace(0, 3*np.pi, 500)
plt.plot(x, np.sin(x**2))
plt.title('A simple chirp')
plt.show()

Вместо встроенной графики я получаю следующее:

<matplotlib.figure.Figure at 0x110b9c450>

И matplotlib.get_backend() показывает, что у меня есть бэкэнд 'module://IPython.kernel.zmq.pylab.backend_inline'.

Ответ 1

Я использовал %matplotlib inline в первой ячейке ноутбука, и он работает. Я думаю, вы должны попробовать:

%matplotlib inline

import matplotlib
import numpy as np
import matplotlib.pyplot as plt

Вы также можете всегда запускать все ваши ядра IPython во встроенном режиме по умолчанию, установив в конфигурационных файлах следующие параметры конфигурации:

c.IPKernelApp.matplotlib=<CaselessStrEnum>
  Default: None
  Choices: ['auto', 'gtk', 'gtk3', 'inline', 'nbagg', 'notebook', 'osx', 'qt', 'qt4', 'qt5', 'tk', 'wx']
  Configure matplotlib for interactive use with the default matplotlib backend.

Ответ 2

Если ваша версия matplotlib выше 1.4, можно также использовать

IPython 3.x и выше

%matplotlib notebook

import matplotlib.pyplot as plt

более старые версии

%matplotlib nbagg

import matplotlib.pyplot as plt

Оба активируют nbagg backend, что позволяет интерактивность.

Пример графика с бэкэндом nbagg

Ответ 4

Я не уверен, почему Хоакин опубликовал свой ответ как комментарий, но это правильный ответ:

запустить ipython с ipython notebook --pylab inline

Редактировать: Хорошо, теперь это не рекомендуется, как в комментарии ниже. Используйте команду %pylab inline magic.

Ответ 5

Чтобы сделать matplotlib встроенным по умолчанию в Jupyter (IPython 3):

  • Редактировать файл ~/.ipython/profile_default/ipython_config.py

  • Добавить строку c.InteractiveShellApp.matplotlib = 'inline'

Обратите внимание, что добавление этой строки в ipython_notebook_config.py не будет работать. В противном случае он хорошо работает с Jupyter и IPython 3.1.0

Ответ 6

Я должен согласиться с foobarbecue (у меня нет достаточно recs, чтобы иметь возможность просто вставить комментарий под его постом):

Теперь рекомендуется, чтобы python notebook не запускался с аргументом --pylab, и, согласно Фернандо Пересу (создателю ipythonnb), %matplotlib inline должен быть начальной командой ноутбука.

Смотрите здесь: http://nbviewer.ipython.org/github/ipython/ipython/blob/1.x/examples/notebooks/Part%203%20-%20Plotting%20with%20Matplotlib.ipynb

Ответ 7

Я нашел обходной путь, который вполне удовлетворителен. Я установил Anaconda Python, и теперь он работает для меня из коробки.

Ответ 8

Я установил anaconda, но matplotlib не строит

Он начинает заговор, когда я делал это

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  

Ответ 9

В Ubuntu вы можете удалить %matplotlib inline, пока у вас есть plt.show() после создания графика.

Ответ 10

Вы можете имитировать эту проблему с синтаксической ошибкой, однако %matplotlib inline не решит проблему.

Сначала пример правильного способа создания сюжета. Все работает так, как ожидалось, с импортом и магией, которые поставляются eNord9.

df_randNumbers1 = pd.DataFrame(np.random.randint(0,100,size=(100, 6)), columns=list('ABCDEF'))

df_randNumbers1.ix[:,["A","B"]].plot.kde()

Однако, оставив () с конца типа графика, вы получите несколько неоднозначную ошибку.

Нехороший код:

df_randNumbers1.ix[:,["A","B"]].plot.kde

Пример ошибки:

<bound method FramePlotMethods.kde of <pandas.tools.plotting.FramePlotMethods object at 0x000001DDAF029588>>

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

Ответ 11

У меня была такая же проблема, когда я выполнял команды построения в отдельных ячейках в Jupyter:

In [1]:  %matplotlib inline
         import matplotlib
         import matplotlib.pyplot as plt
         import numpy as np
In [2]:  x = np.array([1, 3, 4])
         y = np.array([1, 5, 3])
In [3]:  fig = plt.figure()
         <Figure size 432x288 with 0 Axes>                      #this might be the problem
In [4]:  ax = fig.add_subplot(1, 1, 1)
In [5]:  ax.scatter(x, y)
Out[5]:  <matplotlib.collections.PathCollection at 0x12341234>  # CAN'T SEE ANY PLOT :(
In [6]:  plt.show()                                             # STILL CAN'T SEE IT :(

Проблема была решена путем объединения команд построения в одну ячейку:

In [1]:  %matplotlib inline
         import matplotlib
         import matplotlib.pyplot as plt
         import numpy as np
In [2]:  x = np.array([1, 3, 4])
         y = np.array([1, 5, 3])
In [3]:  fig = plt.figure()
         ax = fig.add_subplot(1, 1, 1)
         ax.scatter(x, y)
Out[3]:  <matplotlib.collections.PathCollection at 0x12341234>
         # AND HERE APPEARS THE PLOT AS DESIRED :)