IPython: Манипулирующая команда
В Wolfram Mathematica я могу интерактивно изменять значение параметра с помощью команды Manipulate[]
.
Например, Manipulate[n, {n, 1, 20}]
показывает ползунок, через который можно изменять значение n
.
Есть ли какой-либо простой способ (например, что-то вроде магии или декоратора как в SAGE) для достижения такого же результата в ноутбуке IPython?
Ответы
Ответ 1
Обновление
Это было добавлено в IPython 2.0 (выпущено 1 апреля 2014 г.), оно называется Интерактивные виджеты и работает в веб-ноутбуках.
Оригинальный ответ
Это текущая работа для 2.0 (выпуск декабрь-то-иш). Посмотрите на встречу IPython-dev на YouTube, чтобы увидеть прогресс. последняя встреча с октября 21 в 28мин-иш содержит демонстрацию виджета от Джона, затем interact
от Брайана.
Ответ 2
Я не уверен, будет ли это удовлетворять все ваши потребности, поскольку оно все еще экспериментально, но, похоже, делает то, о чем вы просили, - посмотрите на статические интерактивные виджеты Джейком VanderPlas.
Что я сделал для запуска, было следующее:
Получить источник и установить:
git clone https://github.com/jakevdp/ipywidgets
pip install ./ipywidgets
запустите ноутбук ipython и поэкспериментируйте с ноутбуком example.ipynb
в каталоге ipywidgets
Существует другой тип интерактивной визуализации, в которой доступны панорамирование, масштабирование и метаданные (возможно, больше). Это тот же автор и сообщил в своем блоге плагины D3: действительно интерактивный Matplotlib в вашем браузере.
Есть также хорошие документы: MPLD3: перевод Matplotlib в браузер
Чтобы поэкспериментировать с ним, я сделал более или менее то же самое:
git clone https://github.com/jakevdp/mpld3
pip install ./mpld3/
Теперь можно запустить create_example.py
script, или даже лучше, запустите ipython notebook
и сыграйте с предоставленным mpld3/notebooks/mpld3_demo.ipynb
, а также с привлекательными примерами mpld3_plugins
, опубликованными в блоге.
Возможно, стоит отметить, что я использую дистрибутив Anaconda из python, который включает Jinja2; насколько я знаю, Jinja2 является требованием для mpld3.
Я согласен, что декоратор @interact
a la sage будет приятным.
Ответ 3
Существует также пакет, который называется Manipulate.py.