1

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

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 控制台显示以下消息:

编译后的规范使用 Vega v3,但当前版本是 4.2.0。

据我所知,Altair 实际上似乎没有使用 Vega 4.2.0,尽管在 GitHub 上似乎有一些在这个意义上的发展。问题是:如何将 Vega 降级到与 Altair 兼容的 v3?或者这甚至不是我应该尝试做的?

观察:使用 JupyterLab 0.32.1

4

1 回答 1

0

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

特别是,Vega-Lite 允许字段名称包含基于句点和方括号的特殊语法,以便访问来自分层 JSON 输入的数据。

这些特殊字符可以被转义,但目前 Vega-Lite 中存在一个关于此类转义的错误。在 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]')
)

在此处输入图像描述

于 2018-08-07T18:13:09.580 回答