Jupyter notebook 由同一单元格生成的多个牵牛星图表

Jupyter notebook 由同一单元格生成的多个牵牛星图表,jupyter-notebook,altair,Jupyter Notebook,Altair,我有一个我命名的条目的数据框列表,在运行同一单元格中的代码后,我希望将其可视化。下面是我使用的代码: alt.data_transformers.disable_max_rows() for entry in entries : entry['ds'] = entry.index entry['y'] = entry['count'] entry['floor'] = 0 serie = alt.Chart(entry).mark_line(size=2, o

我有一个我命名的条目的数据框列表,在运行同一单元格中的代码后,我希望将其可视化。下面是我使用的代码:

alt.data_transformers.disable_max_rows()


for entry in entries :
    entry['ds'] = entry.index
    entry['y'] = entry['count']
    entry['floor'] = 0
    serie = alt.Chart(entry).mark_line(size=2, opacity=0.7, color = 'Black').encode(
        x=alt.X('ds:T',  title ='date'),
        y='y'
    ).interactive().properties(
            title='Evolution of '+entry.event.iloc[0]+' events over time'
        )

    alt.layer(serie)\
                  .properties(width=870, height=450)\
                  .configure_title(fontSize=20)
当我从“for”循环中运行相同的代码时,我可以看到对应于一个数据帧的一个图表,但是一旦我运行上面的代码,我就根本看不到任何图形。

有人知道它为什么不工作或者如何解决这个问题吗?

TLDR:use
chart.display()

除非图表显示在单元格的末尾,否则必须手动显示它

打个比方,如果你跑

x + 1
for x in range(10):
    x + 1
Python本身将显示结果。然而,如果你跑

x + 1
for x in range(10):
    x + 1
Python不会显示任何内容,因为单元格中的最后一条语句(在本例中为for循环)没有要显示的返回值。相反,你必须写作

for x in range(10):
    print(x + 1)
对于altair,机制类似:如果图表是在单元格中的最后一条语句中定义的,它将自动显示。否则,您必须手动触发显示,您可以使用显示方法:

for i in range(10:
    chart = alt.Chart(...)
    chart.display()
有关Altair中显示故障排除的详细信息,请参阅