Jupyter: как сделать простые иллюстрации

Я изучаю использование Jupyter/IPython Notebook в качестве электронного ноутбука. Иногда мне нужны простые иллюстрации, чтобы согласиться с моими расчетами, например. стрелки для представления векторных величин. Это иллюстрация, для которой TikZ будет использоваться, если бы мы были в Латексе. Попробовав расширение TikZ magic и потерпел неудачу, я задаюсь вопросом, есть ли более собственный (Python) способ сделать это. Я не вижу, чтобы Matplotlib был правильным инструментом для такого рода вещей (исправьте меня, если я ошибаюсь).

Если вы думаете, что магия TikZ действительно способ пойти, и я должен попытаться заставить ее работать, тогда скажите так. Спасибо.

Ответ 1

TikZ (предпочтительное решение)

Если вы уже знакомы с TikZ, соответствующая магия, вероятно, является лучшим вариантом. Чтобы использовать его, просто следуйте инструкциям по установке в this repo (pip install git+git://github.com/mkrphys/ipython-tikzmagic.git) и загрузите расширение, как показано на странице githib, с помощью %load_ext tikzmagic.
Я просто попытался с IPython 3.1, и он отлично работает. Конечно, вы должны иметь pdflatex.

Matplotlib

Если вы хотите нарисовать простые стрелки, matplotlib также может быть использован и, конечно, более pythonic, чем TikZ. На самом деле простой пример, основанный на этот пример может выглядеть как

import matplotlib.pyplot as plt
%matplotlib inline
plt.axis('off')
plt.arrow(0, 0, 0.5, 0.5, head_width=0.05, head_length=0.1, fc='k', ec='k');

Для более технических графиков с большим количеством стрелок и размеров я полностью согласен с вами в том, что matplotlib не является предпочтительным.

Другие альтернативы

Существует также asymptote magic found здесь. Я еще не пробовал это.

Наконец, вы можете использовать svgs, написанные в записной книжке (подсказки см. в этот вопрос или использование Inkscape или подобное и встраивание полученного SVG файла через from IPython.display import SVG.