Как стать автором
Поиск
Написать публикацию
Обновить

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

Аффтор!

  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())

Про 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 (вот уж где обернули так обернули).

Зарегистрируйтесь на Хабре, чтобы оставить комментарий