我有这个数据框:
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中为每个变量创建并排的箱形图?
答案 0 :(得分:2)
关键是要了解altair希望数据采用窄格式,而我们可以使用.melt()
:
import altair as alt
alt.Chart(df.melt()).mark_boxplot().encode(
x='variable',
y='value'
)
结果:
答案 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'
)