当源是 Pandas DatafFame 时,Altair 不会绘图

Altair doesn't plot when the source is a Pandas DatafFame

我无法使用 Altair 将简单的 Pandas DataFrame 绘制到面积图。关键是,如果我使用 Vega(“source = data.iowa_electricity()”)导入完全相同的 DataFrame,则该图表有效,例如。

source = {
    'year': ['2001-01-01', '2002-01-01'],
    'source': ['Fossil Fuels', 'Nuclear Energy'],
    'net_generation': [35361, 35991]
}
source = pd.DataFrame(source) ### this DF doesn't work

chart = alt.Chart(source).mark_area(opacity=0.3).encode(
    x="year",
    y=alt.Y("net_generation:Q", stack=None),
    color=f"source:N"
)

如果我将上面的“source”更改为“source = data.iowa_electricity()”(其中包含完全相同的数据),图表工作得很好.

我在这里错过了什么?

PS:仅使用字符串作为标签(不带日期)也会发生同样的情况。

数据不相同:字典中每种颜色只有一个条目,而爱荷华电力数据集的每种颜色有很多条目。

正如我在您 的回答中提到的,每种颜色只有一个点的面积图将不会显示任何内容,因为单个点下方的区域宽度为零,因此是不可见的。

您可以通过为每个组添加一个以上的点来确认这一点:

source = {
    'year': ['2001-01-01', '2001-01-02', '2001-01-01', '2001-01-02'],
    'source': ['Fossil Fuels', 'Fossil Fuels', 'Nuclear Energy', 'Nuclear Energy'],
    'net_generation': [100, 500, 200, 400]
}
source = pd.DataFrame(source)

chart = alt.Chart(source).mark_area(opacity=0.3).encode(
    x="year:T",
    y=alt.Y("net_generation:Q", stack=None),
    color="source:N"
)