Нет окна печати в matplotlib


Я только что установил matplotlib в Ubuntu 9.10 с помощью системы пакетов synaptic. Однако, когда я пытаюсь следующий простой пример

>>> from pylab import plot;
>>> plot([1,2,3],[1,2,3])
[<matplotlib.lines.Line2D object at 0x9aa78ec>]

Я не получаю окно графика. Любые идеи о том, как получить окно участка, чтобы показать?

10 74

10 ответов:

Вы можете

import pylab
pylab.show()

или лучше использовать ipython -pylab.

pylab.show() работает, но блокирует (вам нужно закрыть окно).

гораздо более удобным решением является сделать pylab.ion() (интерактивный режим Вкл.) при запуске: все (эквиваленты pylab)pyplot.* команды немедленно отображают свой график. дополнительная информация об интерактивном режиме можно найти на официальном веб-сайте.

Я также второй, используя еще более удобный ipython -pylab (--pylab, в более новых версиях), что позволяет пропустить from … import … часть (%pylab работает также в более новых версиях IPython).

попробуйте это:

import matplotlib
matplotlib.use('TkAgg') 

перед импортом pylab

какие ошибки появляются? Это может быть проблемой, не установив бэкэнд. Вы можете установить его из интерпретатора Python или из файла config (.matplotlib/matplotlibrc) в домашнем каталоге.

чтобы установить бэкэнд в коде, вы можете сделать

import matplotlib
matplotlib.use('Agg')

где ' Agg ' - это имя бэкэнда. Какие бэкэнды присутствуют зависят от вашей установки и ОС.

http://matplotlib.sourceforge.net/faq/installing_faq.html#backends

http://matplotlib.org/users/customizing.html

приведенный ниже фрагмент кода работает как на Eclipse, так и на оболочке Python:

import numpy as np
import matplotlib.pyplot as plt

# Come up with x and y
x = np.arange(0, 5, 0.1)
y = np.sin(x)

# Just print x and y for fun
print x
print y

# Plot the x and y and you are supposed to see a sine curve
plt.plot(x, y)

# Without the line below, the figure won't show
plt.show()

современный IPython использует "--matplotlib" аргумент с необязательным параметром backend. Он по умолчанию "авто", что обычно достаточно хорошо на Mac и Windows. Я не тестировал его на Ubuntu или любом другом дистрибутиве Linux, но я ожидал бы, что он будет работать.

ipython --matplotlib

Если вы столкнулись с проблемой, в которой pylab.show() замораживает окно IPython (это может быть Mac OS X specific; не уверен), вы можете cmd-c в окне IPython, переключиться в окно plot, и он вырвется.

видимо, будущие вызовы pylab.show() не будет замораживать окно IPython, только первый вызов. К сожалению, я обнаружил, что поведение окна графика / взаимодействия с show() меняется каждый раз, когда я переустанавливаю matplotlib, поэтому это решение может не всегда держать.

если вы начинаете IPython с --pylab опция, вам не нужно вызывать show() или draw(). Попробуйте это:

ipython  --pylab=inline

--pylab не работает Jupyter, но, к счастью, мы можем добавить твик в для получения pylab а также autoreload функции.

c.InteractiveShellApp.extensions = ['autoreload', 'pylab']
c.InteractiveShellApp.exec_lines = ['%autoreload 2', '%pylab']

еще одна возможность при использовании easy_install заключается в том, что вам нужно потребовать самую последнюю версию matplotlib. Попробуйте:

import pkg_resources
pkg_resources.require("matplotlib")

перед импортом matplotlib или любого из его модулей.