Сохранение карт Альтаира без пробелов вокруг них - PullRequest
1 голос
/ 15 марта 2020

Я использую диаграммы Альтаира в своих научных статьях c.

Для конференционных документов строго ограничены страницы. Естественно, я хочу использовать все пространство, которое я решил назначить для фигуры для фактического графика, а не для пустого пространства вокруг него. Пробелы автоматически добавляются вокруг цифр с помощью структуры набора текста Latex, и авторы предупреждаются о том, что они не должны вмешиваться, поэтому мне не нужны дополнительные пробелы внутри моих изображений.

В настоящее время мой метод заключается в том, что каждый раз Я создаю диаграмму, которую хочу вставить в свою бумагу, и сначала вручную удаляю пустое пространство вокруг изображения в формате png, используя KolourPaint. Конечно, это утомительно и подвержено ошибкам.

Есть ли способ настроить Altair для генерации только минимального количества пустого пространства вокруг диаграммы? Если это имеет значение, вертикальные белые границы имеют для меня большее значение.

Диаграмма Альтаира, сохраненная как png: enter image description here

Изображение после ручного удаления пустого пространства вокруг диаграммы: enter image description here

(вам может понадобиться загрузить два изображения и открыть их в средстве просмотра изображений, чтобы более четко видеть белую границу)

1 Ответ

2 голосов
/ 15 марта 2020

Пространство вокруг диаграмм Altair контролируется Свойством Vega view.padding , которое можно установить в рендере:

alt.renderers.set_embed_options(
    padding={"left": 0, "right": 0, "bottom": 0, "top": 0}
)

Заполнение по умолчанию равно 5 с каждой стороны.

Например, используя тему fivethirtyeight для лучшего отображения отступов, вы можете создать диаграмму следующим образом:

import altair as alt
alt.renderers.set_embed_options(
    theme="fivethirtyeight",
    padding={"left": 0, "right": 0, "bottom": 0, "top": 0}
)

# load a simple dataset as a pandas DataFrame
from vega_datasets import data
cars = data.cars()

alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
)

enter image description here

...