#altair
#altair
Вопрос:
Я создаю столбчатую диаграмму с накоплением, используя количество категориального поля в столбце dataframes.
chart = alt.Chart(df2).mark_bar().encode(
x="take__take:O",
y=alt.Y('count(name)', stack="normalize", axis=alt.Axis(title="Percent", format="%")),
color=alt.Color('name', sort=alt.EncodingSortField('value', order='descending')),
order=alt.Order(
'value',
sort="ascending"
),
tooltip=[
alt.Tooltip('count(name)', title="Total Students")
]
)
Как мне получить нормализованное количество во всплывающей подсказке?
Ответ №1:
До сих пор ваша диаграмма использовала сокращенные обозначения кодирования для вычисления различных агрегатов; для более сложных операций (например, отображения нормализованных значений во всплывающих подсказках) вам нужно будет использовать преобразования напрямую.
Вот пример отображения процентных значений для каждой группы во всплывающей подсказке с использованием диаграммы, аналогичной той, что вы показали выше:
import altair as alt
import numpy as np
import pandas as pd
np.random.seed(0)
df2 = pd.DataFrame({
'name': np.random.choice(['A', 'B', 'C', 'D'], size=100),
'value': np.random.randint(0, 20, 100),
'take__take': np.random.randint(0, 5, 100)
})
alt.Chart(df2).transform_aggregate(
count='count()',
groupby=['name', 'take__take']
).transform_joinaggregate(
total='sum(count)',
groupby=['take__take']
).transform_calculate(
frac=alt.datum.count / alt.datum.total
).mark_bar().encode(
x="take__take:O",
y=alt.Y('count:Q', stack="normalize", axis=alt.Axis(title="Percent", format="%")),
color='name:N',
tooltip=[
alt.Tooltip('count:Q', title="Total Students"),
alt.Tooltip('frac:Q', title="Percentage of Students", format='.0%')
]
)