Пользовательские средства отображения

Средство отображения (renderer), представленное в соответствующем разделе, — функция, принимающая спецификацию Vega-Lite или Vega как словарь Python dict и возвращающая словарь в формате MIME Bundle Jupyter. Этот словарь возвращается методом диаграммы _repr_mimebundle_.

Ключи MIME Bundle — MIME-типы, например image/png, а значения — данные соответствующего типа: текст, двоичные данные в кодировке base64 или JSON. Стандартное средство html возвращает HTML-представление для разных платформ с MIME-типом "text/html". Схематично это выглядит так:

def default_renderer(spec):
    bundle = {'text/html': generate_html(spec)}
    metadata = {}
    return bundle, metadata

Если нужно реализовать собственную логику отображения без использования системы вывода интерфейса, функция может вернуть пустой словарь MIME Bundle:

def empty_bundle_renderer(spec):
    # Custom display logic that uses the spec
    ...
    # Return empty MIME bundle
    return {}

Для простого примера добавим средство plaintext, которое выводит описание диаграммы обычным текстом:

def plaintext_mimetype(spec):
    return {'text/plain': "description: " + spec.get('description', 'none')}

alt.renderers.register('plaintext', plaintext_mimetype)

Реестр alt.renderers позволяет определять и включать новые средства отображения. Теперь можно включить этот MIME-тип, и при выводе диаграммы будет показано её описание:

alt.renderers.enable('plaintext')

alt.Chart('data.txt').mark_point().encode(
    x='x:Q',
    y='y:Q'
).properties(
    description='This is a simple chart'
)
description: This is a simple chart

Пример прост, но демонстрирует гибкость подхода. Если интерфейс использует _repr_mimebundle_ для получения MIME-представления объекта Python, можно определить функцию, которая любым способом обработает содержимое диаграммы перед возвратом нужного MIME-типа.