Сгруппированная гистограмма в альтаире
Я прочитал пример сгруппированной гистограммы altair, но столбцы основаны на том же столбце данных. Можно ли иметь отдельные столбцы на основе разных столбцов данных?
Например, мои данные выглядят так:
house price_2010 price_2020
1 42342.5 233442.34
2 145124 2342235.50
Как я могу сделать сгруппированную гистограмму с диаграммами как price_2010
а также price_2020
?
1 ответ
У вас есть то, что некоторые люди называют широкоформатными данными, и Altair лучше всего работает с полноформатными данными. См . Документацию Altair для дальнейшего обсуждения.
Короткая версия: если вы хотите создать сгруппированную гистограмму с данными такого типа, вам сначала нужно изменить структуру данных. melt()
Метод может быть полезен для этого:
import altair as alt
import pandas as pd
df = pd.DataFrame({
'index': range(5),
'price_2010': [12, 14, 10, 9, 6],
'price_2020': [14, 15, 12, 14, 10]
})
alt.Chart(df.melt('index')).mark_bar().encode(
alt.X('variable:N', axis=alt.Axis(title='')),
alt.Y('value:Q', axis=alt.Axis(title='price', grid=False)),
color=alt.Color('variable:N'),
column='index:O'
).configure_view(
stroke='transparent'
)
Также обратите внимание, что когда выйдет Altair 3.0, он будет включать в себя преобразование сгиба, которое позволит вам выполнить операцию, выполненную df.melt()
как часть спецификации диаграммы, а не как этап предварительной обработки.