Кастомизируем свой Jupyter Notebook

Большинство современных сред разработки имеют очень много инструментов для улучшения визуальной составляющей. Начиная от цвета фона заканчивая изменением цвета текста определённого шаблона. Сегодня я хочу рассказать, как подогнать под себя интерфейс Jupyter Notebook, используя jupyter-themes.

Подпишись на группу Вконтакте и Телеграм-канал. Там еще больше полезного контента для программистов.
А на YouTube-канале ты найдешь обучающие видео по программированию. Подписывайся!

Установка

Начнём с установки пакета, используя pip или conda.

Для пакетного мененджера pip команда выглядит следующим образом:

>>> pip install jupyterthemes

В ситуации с conda всё выглядит несколько труднее, потому оставлю ссылку с несколькими вариантами установки этого пакета на официальном сайте Conda.

Командная строка

Всего существует 9 тем, список которых я сохраню в список Python (далее нам это пригодится).

In[1]:
#Памятка
themes = ['onedork', 
          'oceans16',
          'chesterish',
          'monokai',
          'gruvboxd',
          'gruvboxl',
          'grade3',
          'solarizedl',
          'solarizedd']

Этот же список можно получить, выполнив команду в терминале:

>>> jt -l

Чтобы установить тему, воспользуемся командой:

>>> jt -t <theme>

Я не буду приводить все команды, которые меняют визуальную составляющую. Последняя команда, которой я часто пользуюсь — изменение отступов к краям экрана:

>>> jt -m 100

Изменение стиля графиков matplotlib

Также, с помощью модуля Python jupyterthemes мы можем изменять стиль графиков, построенных с помощью matplotlib.

Приведу пример для сравнения. Построим график сигмоиды и опишем функцию построения графика:

In[2]:
import matplotlib.pyplot as plt
import numpy as np

from jupyterthemes import jtplot
In[3]:
x = np.linspace(-5, 5, 1000)

y = 1 / (1 + np.exp(-x)) #sigmoid
In[4]:
def plot(x, y):
    plt.clf()
    plt.figure(figsize=(14, 7))
    plt.plot(x, y, color='red', label=r'$\frac{1}{1 + e^x}$')
    plt.legend(loc='best', fontsize=30)
    plt.grid(True)
In[5]:
plot(x, y)

Out[5]:

Теперь воспользуемся подмодулем jtplot:

In[6]:
jtplot.style('onedork')

plot(x, y)

Out[6]:

Скриншоты со всеми темами

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

In[7]:
import os
from PIL import Image

fig, axes = plt.subplots(9, 1, figsize=(30, 60))
axes = axes.flat
i = 0

for theme in themes:
    file = os.path.join('themes', f'{theme}.png')
   
    axes[i].imshow(Image.open(file))
    axes[i].set_title(theme, fontsize=25)
    axes[i].axis('off')
    i += 1

Теперь посмотрим, как же выглядит каждая тема, которую нам предлагает к использованию jupyter-themes.

onedork
oceans16
monokai
gruvboxd
gruvboxl
grade3
solarizedl
solarizedd

Заключение

В этой статье я продемонстрировал, как можно улучшить визуальную составляющую Jupyter Notebook. Конечно же, я продемонтрировал далеко не всё. Репозиторий проекта jupyter-themes находится по ссылочке.

Также рекомендую прочитать статью «Градиентный спуск на пальцах».

А также подписывайтесь на группу ВКонтакте, Telegram и YouTube-канал. Там еще больше полезного и интересного для программистов.