Altair 空图:编译规范使用 Vega v3,但当前版本为 4.2.0

Altair empty plot: The compiled spec uses Vega v3, but current version is 4.2.0

下面的代码生成一个空图:

import pandas as pd
import altair as alt
df = pd.DataFrame({'Month': [1,2,3],
                   'P [mm]': [90.2,100.4,80.1]})
alt.Chart(df).mark_line().encode(x='Month',
                                 y='P [mm]')

JavaScript 控制台显示消息:

The compiled spec uses Vega v3, but current version is 4.2.0.

据我所知,Altair in fact doesn't appear to use Vega 4.2.0,尽管 GitHub 在这方面似乎有一些进展。问题是:如何将 Vega 降级为 Altair 兼容的 v3?或者这甚至不是我应该尝试做的?

观察:使用 JupyterLab 0.32.1

通常,在 Altair 中应避免使用非字母数字的列名。

特别是,Vega-Lite 允许 field names 包含基于句点和方括号的特殊语法,以便从分层 JSON 输入访问数据。

这些特殊字符可以被转义,但目前 Vega-Lite 中有关于此类转义的 bug。在 Altair 中解决此问题的最简单方法是重命名您的输入数据,使列不包含这些特殊字符。例如:

import pandas as pd
import altair as alt
df = pd.DataFrame({'Month': [1,2,3],
                   'P [mm]': [90.2,100.4,80.1]})

df.rename({'P [mm]': 'P'}, axis=1, inplace=True)

alt.Chart(df).mark_line().encode(
    x='Month',
    y=alt.Y('P', title='P [mm]')
)