Python altair - 具有多个变量的面线图

Python altair - facet line plot with multiple variables

我有以下类型的 DataFrame

Marque Annee Modele PVFP           PM
0   A   1   Python  70783.066836    2.067821e+07
1   A   2   Python  75504.270716    1.957717e+07
2   A   3   Python  66383.237169    1.848982e+07
3   A   4   Python  61966.851675    1.755261e+07
4   A   5   Python  54516.367597    1.671907e+07
5   A   1   Sol     66400.686091    2.067821e+07
6   A   2   Sol     74953.770294    1.955218e+07
7   A   3   Sol     66500.916446    1.844078e+07
8   A   4   Sol     62016.941237    1.748098e+07
9   A   5   Sol     54356.008414    1.662684e+07
10  B   1   Python  43152.461787    1.340989e+07
11  B   2   Python  62397.794144    1.494418e+07
12  B   3   Python  1871.135251     2.178552e+06

我尝试构建一个分面图,但没有真正成功。我只能垂直连接生成的 2 个图表。如果您有任何想法可以在一次操作中正确完成,我将不胜感激。

我当前的代码:

   chart = alt.Chart(euro).mark_line().encode(
    x='Annee',
    y='PVFP',
    color='Modele'
).properties(
    width=150,
    height=150
).facet(
    facet='Marque',
    columns=3
)

chart2 = alt.Chart(euro).mark_line().encode(
    x='Annee',
    y='PM',
    color='Modele'
).properties(
    width=150,
    height=150
).facet(
    facet='Marque',
    columns=3
)

chart & chart2

这样做的一个好方法是使用 Fold Transform 将两列折叠成一列,然后您可以使用 rowcolumn 分面来按两个变量分面立刻。例如:

alt.Chart(euro).transform_fold(
    ['PVFP', 'PM'], as_=['key', 'value']
).mark_line().encode(
    x='Annee:Q',
    y='value:Q',
    color='Modele:N'
).properties(
    width=150,
    height=150
).facet(
    column='Marque:N',
    row='key:N'
)