我已经读过Altair grouped bar chart example,但是这些条形基于同一列数据。可以根据不同的数据列使用单独的条形图吗?
例如,我的数据如下:
house price_2010 price_2020
1 42342.5 233442.34
2 145124 2342235.50
如何制作一个以price_2010
和price_2020
为图表的分组条形图?
答案 0 :(得分:1)
您拥有一些人所说的宽格式数据,而Altair最适合长格式数据。有关更多讨论,请参见Altair's documentation。
简短版本:如果要使用此类数据进行分组的条形图,则首先必须重新调整数据框的形状。 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时,它将包含fold transform,这将使您能够将df.melt()
进行的操作作为图表规范的一部分,而不是作为处理步骤。