Комментарии 2
Аффтор!
Не работает твое на моем питоне 3.10.12.
Некоторые хотят, чтобы в браузере рисовалось, но тема не раскрыта от слова никак.
И так, вот что не работает:
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())
Про 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 (вот уж где обернули так обернули).
Анализ и визуализация данных с помощью библиотеки Altair