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]')
)
下面的代码生成一个空图:
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]')
)