Настройте шрифт для Pandas фрейма данных в консоли лаборатории Juypter, используя CSS - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь добавить CSS правил в свою консоль Jupyter Lab, чтобы настроить внешний вид только pandas фреймов данных, и я успешно сделал это в интерактивном режиме в консоли. Я хочу, чтобы мои правила CSS применялись к Jupyter Lab Console при запуске, чтобы мне не приходилось делать это в интерактивном режиме. Я успешно добавил эти настройки стиля в сам фрейм данных pandas (df.style.apply ()), но я не хочу добавлять его в каждый фрейм данных, который я создаю в интерактивном режиме.

Pandas фреймы данных классифицируются как .dataframe. Я создал файл запуска Jupyter Lab под названием «00-first.py» и храню его в каталоге .ipython / profile_default / startup /. Содержимое файла:

    from IPython.display import HTML, display
    import pandas as pd
    import numpy as np
    style = '''<style>
            .dataframe td {font-family:"Liberation Mono";} 
            .dataframe th, .dataframe tr, .dataframe td {padding-top:0.1em; padding-bottom:0.1em;} 
            </style>'''
    display(HTML(style))
    display(HTML("Environment personalization complete."))

Когда я запускаю консоль, я могу подтвердить, что файл 00-first.py был выполнен, поскольку dir () показывает переменную стиля, pd и np. Строка сообщения не распечатывается, и стиль не отображается в CSS веб-странице.

Если я создаю фрейм данных, он отображается со шрифтом по умолчанию css. Чтобы применить стиль, я вручную запускаю display (HTML (style)) , а затем все фреймы данных теперь имеют новый стиль css.

Я пытаюсь удалить наличие набирать display (HTML (style)) в начале каждого сеанса консоли и требовать, чтобы сценарий запуска «00-frist.py» обрабатывал это.

Я использую Jupyter Лабораторная работа 1.1.4 на Linux Manjaro Linux 5.6.7-1-MANJARO x86_64 GNU / Linux с использованием Firefox 75.0.

Как мне это сделать или есть лучший способ сделать это?

До: без стилизации

enter image description here

После: со стилем

enter image description here

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Я пробовал несколько заклинаний NotebookApp.extra_static_pathsList, как было предложено @jayveesea, но не смог заставить этот метод работать. Решение, которое я нашел, оказалось довольно простым: отредактировать файл base CSS, добавив туда мои CSS селекторы.

  1. Найдите каталог приложения Jypyter, используя jupyter lab path из командная строка. Это будет что-то вроде / home / fred / anaconda3 .
  2. Найдите файл index. css для используемой темы. Этот файл будет находиться в каталоге вашего приложения Jupyter, в каталоге темы, которую вы используете. Например, если каталог вашего приложения Jupyter - « / home / fred / anaconda3 », а используемая вами тема - « theme-light-extension », то индексный файл будет расположен по адресу /home/fred/anaconda3/share/jupyter/lab/themes/@jupyterlab/theme-light-extension/index.css
  3. Добавьте свои селекторы CSS в файл.
    /* pandas dataframe customizations */
    .dataframe td {font-family:"Liberation Mono";} 
    .dataframe th, .dataframe tr, .dataframe td {padding-top:0.1em; padding-bottom:0.1em;} 

Перезагрузите консоль Jupyter, и вы должны увидеть все pandas фреймы данных, отформатированные в соответствии с этими правилами.

Одним из недостатков этого метода является то, что вам нужно добавить ваши CSS правила для любых расширений, которые вы хотите поддерживать эти правила, но это работает для меня, поскольку я не переключаю расширения.

0 голосов
/ 06 мая 2020

Посмотрите здесь для использования файла конфигурации для jupyter. В частности, параметр NotebookApp.extra_static_paths:

NotebookApp.extra_static_pathsList По умолчанию: []

Дополнительные пути для поиска обслуживающих c файлов.

Это позволяет добавлять javascript / css, чтобы быть доступным с ноутбука-сервера, или переопределение отдельных файлов в I Python

ОБНОВЛЕНИЕ: похоже, что вышеуказанный метод может быть сломан и может быть заброшен. Другое решение - использовать следующий путь для хранения пользовательского CSS: .jupyter\custom, который не требует обновления файла конфигурации.

Таким образом, в этом случае .jupyter\custom\custom.css будет содержать:

.dataframe td {font-family:"Liberation Mono";} 
.dataframe th, .dataframe tr, .dataframe td {padding-top:0.1em; padding-bottom:0.1em;}
...