Я только что установил matplotlib в Ubuntu 9.10, используя синаптический пакет. Однако, когда я попробую следующий простой пример
>>> from pylab import plot;
>>> plot([1,2,3],[1,2,3])
[<matplotlib.lines.Line2D object at 0x9aa78ec>]
У меня нет окна графика. Любые идеи о том, как отобразить окно графика?
Вы можете ввести
import pylab
pylab.show()
или лучше, используйте ipython -pylab
.
pylab.show()
работает, но блокирует (вам нужно закрыть окно).
Менее удобным решением является выполнение pylab.ion()
(интерактивный режим) при запуске: все (эквиваленты pylab) команд pyplot.*
отображают их график немедленно. Подробнее об интерактивном режиме можно найти на официальном веб-сайте.
Я также использую еще более удобный ipython -pylab
(--pylab
, в новых версиях), который позволяет пропустить часть from … import …
(%pylab
тоже работает в новых версиях IPython).
pylab.show()
чтобы даже открыть фигуру.
Попробуйте следующее:
import matplotlib
matplotlib.use('TkAgg')
ПЕРЕД ПОИСКОМ импорта
Появляются какие-то ошибки? Это может привести к тому, что вы не установите бэкэнда. Вы можете установить его из интерпретатора Python или из файла конфигурации (.matplotlib/matplotlibrc
) в вашем домашнем каталоге.
Чтобы установить серверный код в коде, вы можете сделать
import matplotlib
matplotlib.use('Agg')
где "Agg" - это имя бэкэнд. Какие бэкэнды присутствуют, зависит от вашей установки и ОС.
http://matplotlib.sourceforge.net/faq/installing_faq.html#backends
.matplotlib/matplotlibrc
как backend: Agg
. Тогда вам не нужно явно use
один раз каждый :)
Ниже приведен фрагмент кода, который работает как для 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()
Современный IPython использует аргумент "--matplotlib
" с дополнительным параметром backend. По умолчанию используется "авто", что обычно достаточно хорошо для Mac и Windows. Я не тестировал его на Ubuntu или любом другом дистрибутиве Linux, но я бы ожидал, что он сработает.
ipython --matplotlib
--pylab
больше не работает для Jupyter, но, к счастью, мы можем добавить настройку в файл ipython_config.py
, чтобы получить как pylab
, а также функции autoreload
.
c.InteractiveShellApp.extensions = ['autoreload', 'pylab']
c.InteractiveShellApp.exec_lines = ['%autoreload 2', '%pylab']
Если вы запускаете IPython с опцией --pylab
, вам не нужно вызывать show()
или draw()
. Попробуйте следующее:
ipython --pylab=inline
Если вы столкнулись с проблемой, в которой pylab.show()
зависает окно IPython (это может быть Mac X конкретный, не уверен), вы можете cmd-c в окне IPython, переключиться в окно графика и вырвется.
По-видимому, будущие вызовы pylab.show()
не закроют окно IPython, а только первый вызов. К сожалению, я обнаружил, что поведение окна сюжета/взаимодействия с show() изменяется каждый раз при повторной установке matplotlib, поэтому это решение может не всегда выполняться.
Другая возможность при использовании easy_install заключается в том, что вам потребуется самая последняя версия matplotlib. Попробуйте:
import pkg_resources
pkg_resources.require("matplotlib")
перед импортом matplotlib или любого из его модулей.
matplotlib
установлен, а не влияет на то, как выполняется обработка окна.
show()
.