0

我已阅读 altair分组条形图示例,但条形图基于同一列数据。是否可以根据不同的数据列有单独的条形?

例如,我的数据如下所示:

house  price_2010    price_2020
1      42342.5       233442.34
2      145124        2342235.50

如何使用图表制作分组条形图price_2010price_2020

4

1 回答 1

3

你有一些人所说的宽格式数据,而 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 发布时,它将包含fold transform,这将允许您将完成的操作df.melt()作为图表规范的一部分,而不是作为预处理步骤。

于 2018-10-13T03:05:32.320 回答