Автор статьи: Артем Михайлов

Altair — это декларативная библиотека визуализации данных, разработанная на основе языка Vega и Vega-Lite. Она предоставляет высокоуровневый интерфейс для создания информативных и красочных графиков с минимальными усилиями. Основная философия Altair заключается в том, что пользователи должны описывать, что они хотят увидеть на графике, а не как это реализовать. Это делает код более читаемым и интуитивно понятным.


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

Преимущества использования Altair для анализа и визуализации данных:
  1. Декларативный синтаксис: Одним из ключевых преимуществ Altair является его декларативный синтаксис. Вам нужно лишь описать, какие данные вы хотите визуализировать и какие атрибуты использовать, и Altair самостоятельно создаст соответствующий график. Это существенно упрощает процесс создания визуализаций и снижает вероятность ошибок в коде.
  2. Интерактивность: Altair предоставляет множество инструментов для добавления интерактивности к вашим визуализациям. Вы можете легко создавать всплывающие подсказки, устанавливать возможность масштабирования и перемещения графиков, а также добавлять инструменты для фильтрации данных в реальном времени. Это особенно полезно при создании дашбордов и интерактивных отчетов.
  3. Интеграция с библиотеками для анализа данных: Altair прекрасно интегрируется с другими популярными библиотеками для анализа данных в Python, такими как Pandas. Это означает, что вы можете легко использовать свои существующие навыки работы с данными в сочетании с мощными средствами визуализации Altair.
  4. Компактный и читаемый код: Генерируемый Altair код обычно более компактный и читаемый, чем код для создания графиков в других библиотеках. Это делает его отличным выбором для тех, кто стремится к ясности и понятности кода.
  5. Открытость и активное сообщество: Altair — это open-source проект с активным сообществом разработчиков и пользователей. Это означает, что вы можете рассчитывать на актуальную поддержку и регулярные обновления.
  6. Красивые и информативные графики: Altair уделяет большое внимание деталям и возможностям кастомизации графиков. Вы можете легко настраивать цвета, шрифты, размеры и стили, чтобы создать визуализации, которые соответствуют вашим требованиям и корпоративному стилю.
  7. Поддержка разных форматов данных: Altair позволяет работать с данными в разных форматах, включая CSV, Excel, JSON и даже базы данных. Это делает его мощным инструментом для анализа данных, не зависящим от источника данных.

Установка и настройка


Установка библиотеки Altair — это относительно простой процесс, который может быть выполнен с использованием инструментов Python, таких как pip. Вот шаги, которые необходимо предпринять:

Установка Python: Прежде чем установить Altair, убедитесь, что на вашем компьютере установлен Python. Вы можете скачать его с официального сайта Python. Рекомендуется использовать Python 3.x, так как Altair совместим с этой версией.

Установка библиотеки Altair: Откройте командную строку или терминал и выполните следующую команду для установки Altair:

pip install altair

Эта команда загрузит и установит библиотеку Altair и все необходимые зависимости из репозитория Python Package Index (PyPI).

Проверка установки: Чтобы убедиться, что Altair успешно установлен, вы можете выполнить следующий код в вашей среде Python:

import altair as alt

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

Теперь, когда вы установили библиотеку Altair, давайте рассмотрим необходимые зависимости.

Установка зависимостей


Altair требует некоторых зависимостей, чтобы корректно работать. Обычно они устанавливаются автоматически при установке Altair с помощью pip. Но иногда может возникнуть необходимость установить их вручную, особенно если у вас есть специфические требования или ограничения.

Основными зависимостями для Altair являются:

Vega-Lite: Это ядро для генерации визуализаций в Altair. Оно также устанавливается автоматически при установке Altair.

Pandas: Библиотека для работы с данными в Python. Altair тесно интегрирован с Pandas, поэтому, если вы планируете использовать его для анализа данных, убедитесь, что Pandas также установлен:

pip install pandas

NumPy: Еще одна библиотека для работы с данными. Она может потребоваться в некоторых случаях, так что убедитесь, что она установлена:

pip install numpy

Теперь, когда все зависимости установлены мы можем приступать к обзору синтаксиса.

Основы синтаксиса Altair


Библиотека Altair предоставляет множество функций и методов для создания разнообразных типов графиков и визуализаций данных.

Основные функции и методы, которые вы можете использовать при работе с Altair:

  1. alt.Chart(data): Этот метод создает объект Chart и связывает его с вашими данными. Вы указываете ваш DataFrame (или другой источник данных) как аргумент, чтобы начать работу с данными.
  2. .encode(): Этот метод используется для описания того, какие данные и переменные будут отображены на графике и как они будут закодированы. Например, вы можете использовать .encode(x='x', y='y'), чтобы указать, что переменная 'x' будет на оси X, а переменная 'y' — на оси Y.
  3. .mark_*(): Altair предоставляет различные методы для выбора типа графика. Например, .mark_point() создает точечный график, а .mark_line() — линейный график. Всего доступно множество методов .mark_*(), каждый из которых создает разный тип графика.
  4. .properties(): Этот метод используется для настройки общих свойств графика, таких как заголовок, ширина и высота холста.
  5. .encode(): Этот метод позволяет настраивать атрибуты элементов графика, такие как цвет, размер, форма и другие. Например, .encode(color='variable') изменяет цвет элементов на графике в зависимости от переменной 'variable'.
  6. .interactive(): Этот метод добавляет интерактивность к вашей визуализации. Вы можете включить всплывающие подсказки, масштабирование и перемещение графика и другие интерактивные функции.
  7. .transform_*(): Altair предоставляет методы для преобразования данных перед их визуализацией. Например, .transform_filter() позволяет фильтровать данные на графике на основе определенных условий.
  8. .facet_*(): Этот набор методов используется для создания множественных графиков на одной панели. Например, .facet_wrap() позволяет создать несколько графиков для разных категорий данных.
  9. .configure_*(): Методы этой группы используются для настройки внешнего вида графика, такие как цвета, шрифты и стили.
  10. .repeat(): Этот метод позволяет повторно использовать одну и ту же кодировку данных для создания нескольких графиков с одинаковой структурой.
  11. .transform_aggregate(): Этот метод используется для агрегации данных, что позволяет создавать сводные графики и диаграммы.
  12. .transform_calculate(): Этот метод позволяет вычислять новые переменные на основе существующих данных перед их визуализацией.
  13. .layer(): Этот метод используется для комбинирования нескольких графиков на одном холсте, что позволяет создавать сложные композиции графиков.
  14. .repeat(): Этот метод позволяет создавать несколько графиков с одинаковой структурой, повторяя кодировку данных.
  15. .save(): С помощью этого метода вы можете сохранить график в файл различных форматов, таких как PNG или SVG.

Создание базовых графиков с использованием метода Chart()


В Altair создание графика начинается с создания объекта класса Chart(). Этот объект представляет собой пустой холст, на котором вы будете рисовать вашу визуализацию. Вот как это делается:

import altair as alt

# Создаем объект Chart

chart = alt.Chart()

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

Для того чтобы добавить данные на ваш график, вы можете использовать метод .data(). Например, предположим, у вас есть набор данных в формате Pandas DataFrame:

import altair as alt

import pandas as pd

# Создаем DataFrame с данными

data = pd.DataFrame({'x': [1, 2, 3, 4, 5], 'y': [10, 5, 8, 2, 7]})

# Создаем объект Chart и указываем данные

chart = alt.Chart(data)

Теперь данные из вашего DataFrame связаны с объектом chart, и вы можете начать описывать, как именно вы хотите их визуализировать.

Описание данных и кодирование переменных


Altair предоставляет множество методов для описания данных и кодирования переменных на графике. Одним из наиболее важных методов является .encode(), который позволяет вам указать, какие переменные будут отображены по осям X и Y, а также какие атрибуты графика (например, цвет или размер) зависят от определенных переменных:

import altair as alt

import pandas as pd

# Создаем DataFrame с данными

data = pd.DataFrame({'x': [1, 2, 3, 4, 5], 'y': [10, 5, 8, 2, 7]})

# Создаем объект Chart и указываем данные

chart = alt.Chart(data)

# Описываем тип графика и кодируем данные

chart.mark_point().encode(x='x', y='y')


Здесь мы использовали метод .mark_point() для указания, что мы хотим создать точечный график.

Создание интерактивных визуализаций


Добавление интерактивности с помощью метода .interactive()


Altair предоставляет метод .interactive(), который позволяет легко добавлять интерактивность к вашим графикам. Вы можете использовать его, чтобы включить различные интерактивные элементы, такие как всплывающие подсказки, масштабирование и перемещение графика.

Давайте рассмотрим простой пример создания интерактивного точечного графика с всплывающими подсказками:

import altair as alt

import pandas as pd

# Создаем DataFrame с данными

data = pd.DataFrame({'x': [1, 2, 3, 4, 5], 'y': [10, 5, 8, 2, 7], 'label': ['A', 'B', 'C', 'D', 'E']})

# Создаем объект Chart и указываем данные

chart = alt.Chart(data)

# Описываем тип графика (точечный) и кодируем данные

chart.mark_point().encode(

    x='x',

    y='y',

    tooltip='label'  # Добавляем всплывающие подсказки с метками

).interactive()  # Включаем интерактивность

В этом примере мы использовали атрибут tooltip для создания всплывающих подсказок, которые отображают метки 'A', 'B', 'C', 'D', 'E' при наведении на соответствующие точки на графике.


Метод .interactive() включает интерактивность, позволяя вам взаимодействовать с графиком.

Создание всплывающих подсказок и инструментов управления


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

  • Всплывающие подсказки (Tooltips): Всплывающие подсказки позволяют отображать дополнительную информацию при наведении курсора на элементы графика. Вы можете использовать атрибут tooltip для указания, какие данные должны отображаться в подсказках. В предыдущем примере мы использовали tooltip='label', чтобы отобразить метки на точках графика.

Инструменты управления (Selection Tools): Altair поддерживает инструменты управления, такие как масштабирование (Zoom), перемещение (Pan) и выделение (Selection). Вы можете добавить их к графику с помощью метода .add_selection(). Например:

import altair as alt

import pandas as pd

# Создаем DataFrame с данными

data = pd.DataFrame({'x': [1, 2, 3, 4, 5], 'y': [10, 5, 8, 2, 7]})

# Создаем интервальное выделение по оси X

interval = alt.selection_interval(encodings=['x'])

# Создаем объект Chart и указываем данные

chart = alt.Chart(data).mark_bar().encode(

    x='x',

    y='y'

).add_selection(interval)

chart

В этом примере мы создали интервальное выделение по оси X, что позволяет пользователю выделять диапазоны данных на графике.

Изменение параметров в реальном времени


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

import altair as alt

import pandas as pd

# Создаем DataFrame с данными

data = pd.DataFrame({'x': [1, 2, 3, 4, 5], 'y': [10, 5, 8, 2, 7]})

# Создаем ползунок для изменения ширины линии

line_width = alt.binding_range(min=1, max=5, step=1)

line_width_slider = alt.selection_single(fields=['line_width'], bind=line_width, name='Line Width')

# Создаем объект Chart и указываем данные

chart = alt.Chart(data).mark_line().encode(

    x='x',

    y='y',

    strokeWidth=alt.condition(line_width_slider, alt.value(2), alt.value(1))  # Условное изменение ширины линии

).add_selection(line_width_slider)

chart


Мы создали ползунок (line_width_slider), который позволяет пользователю в реальном времени изменять ширину линии на линейном графике. Мы используем alt.condition() для условного изменения ширины линии на графике в зависимости от значения ползунка.




Работа с различными типами графиков


Создание линейных графиков


Altair предоставляет простой и интуитивно понятный способ создания линейных графиков. Для этого мы используем метод .mark_line(), чтобы указать тип графика, и метод .encode(), чтобы описать данные.

import altair as alt
import pandas as pd

# Создаем DataFrame с данными
data = pd.DataFrame({
    'year': [2010, 2011, 2012, 2013, 2014],
    'value': [10, 15, 13, 17, 20]
})

# Создаем объект Chart и указываем данные
chart = alt.Chart(data)

# Описываем тип графика (линейный) и кодируем данные
chart.mark_line().encode(
    x='year',
    y='value'
)


В этом коде переменная 'year' кодируется по оси X, а переменная value — по оси Y. Altair автоматически определит тип переменных (категориальная или количественная) и настроит график соответственно.

Создание гистограмм


Для создания гистограмм в Altair используется метод .mark_bar(). Гистограммы отображают распределение данных по категориям.

import altair as alt
import pandas as pd

# Создаем DataFrame с данными
data = pd.DataFrame({'value': [4, 5, 2, 7, 6, 8, 3, 5, 7, 4, 6, 5, 6, 7, 3, 4, 5, 6, 8, 9]})

# Создаем объект Chart и указываем данные
chart = alt.Chart(data)

# Описываем тип графика (гистограмма) и кодируем данные
chart.mark_bar().encode(
    alt.X('value:Q', bin=True),  # bin=True указывает, что данные следует разделить на интервалы
    alt.Y('count():Q')
)


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

Создание диаграмм рассеяния с помощью Altair


Для создания диаграмм рассеяния в Altair используется метод .mark_point(). Диаграммы рассеяния полезны для выявления корреляций и взаимосвязей между двумя переменными.

import altair as alt
import pandas as pd

# Создаем DataFrame с данными
data = pd.DataFrame({
    'x': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    'y': [3, 5, 7, 9, 11, 10, 8, 6, 4, 2]
})

# Создаем объект Chart и указываем данные
chart = alt.Chart(data)

# Описываем тип графика (диаграмма рассеяния) и кодируем данные
chart.mark_point().encode(
    x='x',
    y='y'
)


Диаграмму рассеяния отображает точки данных на плоскости, где по оси X — переменная 'x', а по оси Y — переменная 'y'. Это позволяет нам визуально оценить взаимосвязь между этими двумя переменными.

Дополнительные настройки и стили


Altair предоставляет множество возможностей для настройки внешнего вида графиков, включая изменение цветов, ширины линий, добавление подписей и многое другое. Вы можете использовать методы .configure_*(), чтобы настроить внешний вид вашего графика.

import altair as alt
import pandas as pd

# Создаем DataFrame с данными
data = pd.DataFrame({'x': [1, 2, 3, 4, 5], 'y': [10, 5, 8, 2, 7]})

# Создаем объект Chart и указываем данные
chart = alt.Chart(data)

# Описываем тип графика (точечный) и кодируем данные
chart.mark_point().encode(
    x='x',
    y='y'
).configure_mark(
    color='red',  # Изменяем цвет точек
    size=100  # Изменяем размер точек
).configure_axis(
    labelFontSize=14,  # Изменяем размер шрифта на осях
    titleFontSize=16  # Изменяем размер шрифта заголовка
)


Настраиваем цвет и размер точек, а также размеры шрифтов на осях и в заголовке.

Группировка и агрегация данных


Создание группированных графиков для сравнения категорий


Предположим, у нас есть набор данных о продажах разных продуктов в разных регионах за несколько лет. Мы хотим сравнить общий объем продаж для каждого продукта и региона. Для этого мы можем использовать группировку данных и создать график, который позволяет сравнивать продукты и регионы:

import altair as alt
import pandas as pd

# Создаем DataFrame с данными
data = pd.DataFrame({
    'Product': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Region': ['X', 'X', 'Y', 'Y', 'Z', 'Z'],
    'Sales': [100, 150, 120, 80, 200, 180]
})

# Создаем объект Chart и указываем данные
chart = alt.Chart(data)

# Группируем данные по продукту и региону, агрегируя сумму продаж
grouped_chart = chart.mark_bar().encode(
    x='Product:N',
    y='sum(Sales):Q',
    color='Region:N'
)

grouped_chart


В этом примере мы видим график, на котором по оси X отображаются продукты, по оси Y — суммарные продажи, а цветом обозначены разные регионы. Использовали функцию агрегации sum(Sales), чтобы вычислить общую сумму продаж для каждой категории (продукта) в каждом регионе. График позволяет сравнивать продажи продуктов A и B в разных регионах.

Агрегация данных для отображения суммарных результатов


Агрегация данных — это процесс вычисления сумм, средних значений, максимумов и других статистических показателей на основе группировки данных. Это позволяет получить общее представление о данных и выявить основные характеристики.

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

import altair as alt
import pandas as pd

# Создаем DataFrame с данными
data = pd.DataFrame({
    'Product': ['A', 'B', 'A', 'B', 'A', 'B'],
    'DayOfWeek': ['Mon', 'Mon', 'Tue', 'Tue', 'Wed', 'Wed'],
    'Sales': [100, 150, 120, 80, 200, 180]
})

# Создаем объект Chart и указываем данные
chart = alt.Chart(data)

# Группируем данные по продукту и агрегируем сумму продаж
aggregated_chart = chart.mark_bar().encode(
    x='Product:N',
    y='sum(Sales):Q'
)

aggregated_chart


В этом графике по оси X отображаются продукты, а по оси Y — суммарные продажи для каждого продукта. Использовали функцию агрегации sum(Sales), чтобы вычислить общую сумму продаж для каждого товара.

Использование функций агрегации в Altair


Библиотека Altair обеспечивает удобный способ использования функций агрегации в вашем анализе данных и визуализации. Вы можете применять функции агрегации к данным, используя выражения в методе .encode() вашего объекта Chart.

Наиболее часто используемых функций агрегации:
  • count(): Вычисляет количество наблюдений в группе.
  • sum(): Вычисляет сумму значений в группе.
  • mean(): Вычисляет среднее значение в группе.
  • median(): Вычисляет медиану (среднее значение в середине) в группе.
  • max(): Находит максимальное значение в группе.
  • min(): Находит минимальное значение в группе.

Пример использования функции агрегации mean() для создания графика средних продаж по продукту:

import altair as alt
import pandas as pd

# Создаем DataFrame с данными
data = pd.DataFrame({
    'Product': ['A', '

B', 'A', 'B', 'A', 'B'],
    'DayOfWeek': ['Mon', 'Tue', 'Wed', 'Mon', 'Tue', 'Wed'],
    'Sales': [100, 150, 120, 80, 200, 180]
})

# Создаем объект Chart и указываем данные
chart = alt.Chart(data)

# Группируем данные по продукту и агрегируем средние продажи
aggregated_chart = chart.mark_bar().encode(
    x='Product:N',
    y='mean(Sales):Q'
)

aggregated_chart


На этом графике мы отображаем средние продажи для каждого продукта. Функция агрегации mean(Sales) вычисляет среднее значение продаж для каждого продукта.

Пример создания дашборда


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

Для создания дашборда мы будем использовать библиотеку altair, pandas для работы с данными и panel для создания интерактивного дашборда. Убедитесь, что у вас установлены все необходимые библиотеки.

import altair as alt
import pandas as pd
import panel as pn

# Создаем DataFrame с данными о продажах
data = pd.DataFrame({
    'Category': ['Electronics', 'Books', 'Clothing', 'Electronics', 'Books', 'Clothing'],
    'Region': ['North', 'North', 'North', 'South', 'South', 'South'],
    'Sales': [1000, 800, 1200, 600, 750, 900]
})

# Создаем функцию для создания интерактивных графиков
def create_chart(category=None, region=None):
    filtered_data = data
    if category:
        filtered_data = filtered_data[filtered_data['Category'] == category]
    if region:
        filtered_data = filtered_data[filtered_data['Region'] == region]

    chart = alt.Chart(filtered_data).mark_bar().encode(
        x='Category',
        y='sum(Sales)',
        color='Region',
    ).properties(
        title=f'Sales by Category and Region'
    )
    return chart

# Создаем выпадающие списки для выбора категории и региона
categories = ['Electronics', 'Books', 'Clothing']
regions = ['North', 'South']

category_selector = pn.widgets.Select(name='Select Category', options=categories)
region_selector = pn.widgets.Select(name='Select Region', options=regions)

# Создаем интерактивный дашборд
@pn.depends(category_selector.param.value, region_selector.param.value)
def update_dashboard(category, region):
    chart = create_chart(category, region)
    return chart

# Создаем панель дашборда
dashboard = pn.Column(
    category_selector,
    region_selector,
    update_dashboard
)

# Запускаем дашборд
dashboard.servable()

Что делает этот код:
  1. Мы создаем набор данных о продажах в разных категориях и регионах и сохраняем его в DataFrame.
  2. Затем мы создаем функцию create_chart(), которая принимает параметры category и region и создает интерактивный график, отображающий продажи по выбранным категориям и регионам.
  3. Мы создаем выпадающие списки для выбора категории и региона с помощью библиотеки panel.
  4. И, наконец, мы создаем интерактивный дашборд, который зависит от выбора в выпадающих списках.
Пользователь может выбирать категорию и регион, и график будет автоматически обновляться.


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

Заключение


Библиотека Altair предоставляет мощные инструменты для анализа и визуализации данных в Python, и с ее помощью вы можете создавать информативные и интерактивные визуализации для вашего анализа данных и проектов. Начните использовать Altair в своих проектах и улучшайте ваши навыки анализа данных и визуализации.

Еще больше полезной информации можно получить на бесплатных вебинарах от экспертов из OTUS. В рамках ближайшего вебинара Роман Козлов, который занимается пользовательской аналитикой в проектах Правительства Москвы, расскажет о методах предобработки и «очистки» данных с использованием мощного инструмента Python — библиотеки Pandas. Этот этап подготовки данных является критическим для построения информативных дашбордов, которые позволяют принимать обоснованные решения. Регистрируйтесь на вебинар, будет интересно.

Комментарии (2)


  1. starik-2005
    01.09.2023 20:04

    Аффтор!

    1. Не работает твое на моем питоне 3.10.12.

    2. Некоторые хотят, чтобы в браузере рисовалось, но тема не раскрыта от слова никак.

    И так, вот что не работает:

    import altair as alt
    import pandas as pd

    #Создаем DataFrame с данными

    data = pd.DataFrame({'x': [1, 2, 3, 4, 5], 'y': [10, 5, 8, 2, 7], 'label': ['A', 'B', 'C', 'D', 'E']})

    #Создаем объект Chart и указываем данные

    chart = alt.Chart(data)

    #Описываем тип графика (точечный) и кодируем данные

    chart.mark_point().encode(
    x='x',
    y='y',
    tooltip='label' # Добавляем всплывающие подсказки с метками
    ).interactive() # Включаем интерактивность

    А вот так внезапно работать начинает.

    chart = alt.Chart(data).mark_point().encode(
    x='x',
    y='y',
    tooltip='label'
    ).interactive()

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

    print(chart.to_html())


  1. economist75
    01.09.2023 20:04

    Про Altair еще можно бегло сказать что он написан реально крутым перцем Jake VanderPlas как "замена всему имеющемуся под Python" (невыполнимо, т.к. необъятно), что у Altair кристально чистая векторная графика, которая к тому же очень компактна в верстке, что есть дурацкое ограничение в 5k точек, которое легко снять и что тупить Altair начнет с 100k (как и все другие либы), но при этом есть вар-т запустить отдельный сервер (процесс) для vega-манипуляций, и не будут раздуваться блокноты *.ipynb

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

    Скажем так, сразу бежать писать свою обертку, как для maplotlib - вам не захочется, все таки синтаксис Altair самобытен и ясен. Но многим заходит "простое" использование Altair в кач-ве штатного бэка для графиков "на посмотреть" в pandas, это даже выглядит проще:

    df.plot.scatter(x='дата', y='колво', s='сумма', c='цена', backend='altair') # pandas
    Chart(df).mark_circle().encode(x='дата', y='колво', size='сумма', color='цена') # altair

    А в быстро растущем web-фреймоворке Streamlit - Altair там основная рисовальная либа, зацените кристальную ясность и простоту кода: https://altair.streamlit.app (вот уж где обернули так обернули).