Нет окна графика в matplotlib

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

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

У меня нет окна графика. Любые идеи о том, как отобразить окно графика?

Ответ 1

Вы можете ввести

import pylab
pylab.show()

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

Ответ 2

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

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

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

Ответ 3

Попробуйте следующее:

import matplotlib
matplotlib.use('TkAgg') 

ПЕРЕД ПОИСКОМ импорта

Ответ 4

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

Чтобы установить серверный код в коде, вы можете сделать

import matplotlib
matplotlib.use('Agg')

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

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

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

Ответ 5

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

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

# 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
pylab.show()

Ответ 6

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

ipython --matplotlib

Ответ 7

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

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

Ответ 8

Если вы запускаете IPython с опцией --pylab, вам не нужно вызывать show() или draw(). Попробуйте следующее:

ipython  --pylab=inline

Ответ 9

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

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

Ответ 10

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

import pkg_resources
pkg_resources.require("matplotlib")

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