Как открыть интерактивное окно matplotlib в блокноте IPython?
Я использую IPython с --pylab=inline
и иногда хотел бы быстро переключиться на интерактивный, масштабируемый графический интерфейс matplotlib для просмотра графиков (тот, который появляется, когда вы что-то выводите в терминальной консоли Python). Как я мог это сделать? Желательно, не выходя и не перезагружая мой блокнот.
Проблема с линейными графиками в ноутбуке IPy заключается в том, что они имеют ограниченное разрешение, и я не могу увеличить их, чтобы увидеть некоторые меньшие части. С помощью графического интерфейса maptlotlib, который запускается с терминала, я могу выбрать прямоугольник графика, к которому я хочу увеличить масштаб, и соответственно настроить оси. Я пытался экспериментировать с
from matplotlib import interactive
interactive(True)
а также
interactive(False)
но это ничего не сделало. Я не мог найти подсказки в Интернете.
Ответы
Ответ 1
В соответствии с документацией вы должны иметь возможность переключаться туда и обратно следующим образом:
In [2]: %matplotlib inline
In [3]: plot(...)
In [4]: %matplotlib qt # wx, gtk, osx, tk, empty uses default
In [5]: plot(...)
и появится всплывающее окно с обычным графиком (может потребоваться перезагрузка на ноутбуке).
Надеюсь, это поможет.
Ответ 2
Если все, что вы хотите сделать, это перейти от встроенных графиков к интерактивным и обратно (чтобы вы могли панорамировать/масштабировать), лучше использовать магию matplotlib.
#interactive plotting in separate window
%matplotlib qt
и обратно в html
#normal charts inside notebooks
%matplotlib inline
% pylab magic импортирует кучу других вещей и может даже привести к конфликту. Он делает "из импорта pylab".
Вы также можете использовать новый блокнот для ноутбука (добавленный в matplotlib 1.4):
#interactive charts inside notebooks, matplotlib 1.4+
%matplotlib notebook
Если вы хотите иметь больше интерактивности в своих диаграммах, вы можете посмотреть mpld3 и bokeh. mpld3 отлично, если у вас нет тонны точек данных (например, < 5k +), и вы хотите использовать обычный синтаксис matplotlib, но больше интерактивности по сравнению с ноутбуком% matplotlib. Bokeh может обрабатывать множество данных, но вам нужно изучить его синтаксис, поскольку это отдельная библиотека.
Также вы можете проверить pivottablejs (pip install pivottablejs)
from pivottablejs import pivot_ui
pivot_ui(df)
Как бы холодная интерактивная разведка данных ни была, она может полностью испортиться с воспроизводимостью. Это случилось со мной, поэтому я стараюсь использовать его только на самой ранней стадии и переключиться на чистый встроенный matplotlib/seaborn, как только я почувствовал данные.
Ответ 3
Начиная с matplotlib 1.4.0 теперь имеется интерактивный бэкэнд для использования в ноутбуке
%matplotlib notebook
Существует несколько версий IPython, которые не имеют зарегистрированного псевдонима, падение:
%matplotlib nbagg
Если это не работает, обновите IPython.
Чтобы играть с этим, перейдите tmpnb.org
и вставить
%matplotlib notebook
import pandas as pd
import numpy as np
import matplotlib
from matplotlib import pyplot as plt
import seaborn as sns
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts = ts.cumsum()
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index,
columns=['A', 'B', 'C', 'D'])
df = df.cumsum()
df.plot(); plt.legend(loc='best')
в ячейку кода (или просто изменить существующий демонстрационный блок python)
Ответ 4
Я использую ipython в "jupyter QTConsole" от Anaconda по адресу www.continuum.io/downloads, 28-28 марта.
Здесь приведен пример перехода назад и вперед между отдельным окном и встроенным сюжетным режимом с использованием магии ipython.
>>> import matplotlib.pyplot as plt
# data to plot
>>> x1 = [x for x in range(20)]
# Show in separate window
>>> %matplotlib
>>> plt.plot(x1)
>>> plt.close()
# Show in console window
>>> %matplotlib inline
>>> plt.plot(x1)
>>> plt.close()
# Show in separate window
>>> %matplotlib
>>> plt.plot(x1)
>>> plt.close()
# Show in console window
>>> %matplotlib inline
>>> plt.plot(x1)
>>> plt.close()
# Note: the %matplotlib magic above causes:
# plt.plot(...)
# to implicitly include a:
# plt.show()
# after the command.
#
# (Not sure how to turn off this behavior
# so that it matches behavior without using %matplotlib magic...)
# but its ok for interactive work...
Ответ 5
Лучшим решением для вашей проблемы может быть библиотека Charts. Это позволяет вам использовать отличную библиотеку javascript Highcharts, чтобы сделать красивые и интерактивные сюжеты. Highcharts использует тег HTML svg
, поэтому все ваши диаграммы являются фактически векторными изображениями.
Некоторые функции:
- Векторные графики, которые вы можете скачать в форматах .png,.jpg и .svg, чтобы вы никогда не сталкивались с проблемами с разрешением.
- Интерактивные диаграммы (масштабирование, слайд, зависание над точками,...)
- Используется в ноутбуке IPython
- Исследуйте сотни структур данных одновременно, используя возможности асинхронного построения.
Отказ от ответственности: я разработчик библиотеки
Ответ 6
Перезагрузите ядро и очистите вывод (если не начинайте с нового ноутбука), запустите
%matplotlib tk
Для получения дополнительной информации перейдите к Построение графика с помощью matplotlib