Есть ли способ создания интерактивных графиков (a la D3) в ноутбуках IPython?

Я нашел эти два ответа: Анимированные графики в ipython-ноутбуке, Как захватить график matplotlib как html в ноутбуке ipython?

Но они не учитывают интерактивность. Я хотел бы отобразить график с 2-3 кривыми и позволить пользователю навести эти кривые для получения более подробной информации или управления параметрами, которые используются для генерации этих кривых из комбинированного блока

Ответы

Ответ 1

проверьте следующий ответ на iPython: Manipulate-like command.

а также два следующих направления:

Ответ 2

Я не считаю, что стандартные графики matplotlib способны к интерактивности, которую вы хотите. Chaco может выполнять интерактивные графики, но не в ipython-ноутбуке AFAICT. Ваш лучший выбор, вероятно, Bokeh. Он выводит на Javascript/HTML, может выполнять интерактивные графики и имеет пример использования его из ipython.

Ответ 3

Вы можете проверить Plotly. Они отображают интерактивные графики D3 внутри IPython Notebooks (примеры здесь. Вы также можете экспортировать как статические изображения, так и масштабировать, зависать, панорамировать и видеть текст в режиме наведения. Интерактивность - это один из шагов, которые они подчеркивают. Кроме того, вы можете также использовать

Ответ 5

Другим решением может быть библиотека Charts. Это позволяет вам использовать отличную библиотеку javascript Highcharts, чтобы сделать красивые и интерактивные сюжеты из коробки.

Некоторые функции:

  • Векторные графики, которые вы можете скачать в форматах .png,.jpg и .svg, чтобы вы никогда не столкнулись с проблемами разрешения.
  • Интерактивные диаграммы (масштабирование, слайд, зависание над точками,...)
  • Используется в ноутбуке IPython
  • Исследуйте сотни структур данных одновременно, используя возможности асинхронного построения.

Отказ от ответственности: я разработчик библиотеки

Ответ 6

Вы можете запускать javascript прямо из ноутбуков IPython (%%htmlи %%javascript), поэтому можно запустить код D3. Проверьте видео. Точный способ, которым это было бы реализовано, пока не задан, поскольку это функция для IPython 2.0. На данный момент есть много хакеров, а также проекты, которые пытаются перенести некоторые характеристики D3 на Python (такие как bokeh и python-nvd3).

Я еще не тестировал ни одного из них. Мое собственное предубеждение состояло бы в том, чтобы сначала попробовать пример ниже, который является статичным, но напрямую использует D3 (поэтому теоретически он должен работать для интерактивных графиков):