Подтвердить что ты не робот

IPython Notebook svg Цифры по умолчанию

Я только начал использовать ipython, и я создаю такие цифры, как:

fig, axes = plt.subplots()
xs = range(0,100)
axes.plot(xs, [x*x for x in xs], 'r')

Я знаю, что цифры могут отображаться как svgs, см. здесь. К сожалению, цифры всегда отображаются как растрированное изображение. Растрированные изображения становятся очень уродливыми, когда я использую функцию масштабирования ноутбука. Есть ли способ изменить это поведение, так что цифры отображаются как svg по умолчанию?

4b9b3361

Ответ 1

Вы можете изменить формат фигуры по умолчанию в файлах конфигурации профиля ipython. Что я сделал, так это создать профиль конфигурации, особенно для ноутбука, используя:

ipython profile create nbserver

В командной строке. Это создает целую кучу файлов под ~/.ipython/profile_nbserver, которые имеют строки строк почти для всех параметров, которые вы могли бы захотеть изменить (это может быть где-то, например, ~/.config/ipython вместо этого, в зависимости от вашей ОС, а не о том, где оно будет находиться под окнами), Вам нужно посмотреть в файле ipython_notebook_config.py. Затем вы должны добавить строку:

c.InlineBackend.figure_formats = ['svg']

Обратите внимание, что это применимо только к IPython 3.x, и вы также можете указать дополнительные форматы в соответствии с комментарием @HarrySchreiner. Для IPython 2.x вы должны установить c.InlineBackEnd.figure_format='svg'. Чтобы использовать этот профиль, вы должны запустить ноутбук с помощью

ipython notebook --profile=nbserver

Если это слишком большая проблема, не указывайте имя профиля при запуске create и не изменяйте профиль по умолчанию.

Кроме того, вы можете иметь строку

c.IPKernelApp.matplotlib = 'inline'

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

Изначально я также хотел использовать бэкэнд svg вместо png, чтобы включить масштабирование и т.д. Однако я обнаружил, что некоторые графики, такие как pcolor с большим количеством точек, могут просто убить мой браузер при использовании svg-сервера. Поэтому мне проще использовать png и просто используйте команды xlim и ylim для увеличения вручную, если нужно.

Кроме того, вы должны определенно настроить строку c.InlineBackend.rc, чтобы установить более разумные значения по умолчанию для размера фигуры и используемых шрифтов.

изменить

Рекомендуемая в настоящее время наилучшая практика - не использовать pylab, а явно импортировать matplotlib и numpy, поэтому я изменил свой ответ, чтобы не поощрять это. См. Это сообщение по следующим причинам:

http://carreau.github.io/posts/10-No-PyLab-Thanks.html

Кроме того, если svg-рендеринг слишком медленный для определенных элементов графика (например, pcolor или plot_surface), вы можете передать опцию rasterized=True этим командам. Это означает, что эти конкретные части графика будут иметь рендеринг на основе пикселов, но все остальные элементы графика будут хорошо прорисованы.

Ответ 2

Магия, которую я искал:

%matplotlib inline
%config InlineBackend.figure_format = 'svg'
import matplotlib.pyplot as plt

В качестве альтернативы вы можете показать png, но сохранить фигуру в файл:

plt.savefig(fig_filename, format='svg')