Altair的并排箱线图

时间:2020-05-28 05:20:02

标签: python pandas altair

我有这个数据框:

this

df = pd.DataFrame(np.array([[1, 4, 7], [2, 5, 8], [3, 6, 9],
                            [4, 7, 10], [5, 8, 11]
                            ]), columns=['a', 'b', 'c'])

我如何在Altair中为每个变量创建并排的箱形图?

2 个答案:

答案 0 :(得分:2)

关键是要了解altair希望数据采用窄格式,而我们可以使用.melt()

import altair as alt

alt.Chart(df.melt()).mark_boxplot().encode(
    x='variable',
    y='value'
)

结果:

boxplots

答案 1 :(得分:2)

您拥有宽格式的数据,而Altair与长格式的数据最匹配。有关此内容的讨论,请参阅Altair文档中的Long-Form vs. Wide-Form Data

您可以使用pd.melt函数(如@chthonicdaemon's answer所示,以熊猫的形式重塑数据,也可以使用Altair的Fold Transform来重整图表规格中的数据。 / p>

以下是基于变换的方法的示例:

import altair as alt
import pandas as pd
import numpy as np

df = pd.DataFrame(np.array([[1, 4, 7], [2, 5, 8], [3, 6, 9],
                            [4, 7, 10], [5, 8, 11]
                            ]), columns=['a', 'b', 'c'])

alt.Chart(df).transform_fold(
    ['a', 'b', 'c'],
    as_=['key', 'value']
).mark_boxplot().encode(
    x='key:N',
    y='value:Q'
)

enter image description here