同一单元格生成的多个altair图表

时间:2020-04-15 12:57:58

标签: jupyter-notebook altair

我有一个名为 entries 的熊猫数据框列表,在同一单元中运行代码后,我想将它们可视化。以下是我使用的代码:

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”循环中运行相同的代码时,我看到了与一个数据帧相对应的一个图表,但是一旦我运行了上面的代码,我将一无所获。
有谁知道为什么它不起作用或如何解决此问题?

1 个答案:

答案 0 :(得分:2)

TLDR:使用chart.display()

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

以此类推,如果您运行

x + 1

本身,Python将显示结果。但是,如果您运行

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中的显示器故障排除的更多信息,请参见here