【问题标题】:Multiple altair charts generated by the same cell同一单元格生成的多个 altair 图
【发布时间】:2020-07-28 11:01:07
【问题描述】:

我有一个我命名为 entries 的 pandas 数据框列表,我想在从同一单元格运行代码后将其可视化。以下是我使用的代码:

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”循环之外运行相同的代码时,我会看到与一个数据帧相对应的一个图表,但是一旦我运行上面的代码,我根本就看不到任何图表。
有谁知道为什么它不起作用或如何解决这个问题?

【问题讨论】:

    标签: jupyter-notebook altair


    【解决方案1】:

    TLDR:使用chart.display()

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

    以此类推,如果你跑

    x + 1
    

    Python 会自行显示结果。但是,如果你运行

    for x in range(10):
        x + 1
    

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

    for x in range(10):
        print(x + 1)
    

    对于 altair,机制类似:如果图表在单元格中的最后一条语句中定义,则会自动显示。否则,您必须手动触发显示,您可以使用 display 方法:

    for i in range(10:
        chart = alt.Chart(...)
        chart.display()
    

    有关 Altair 中显示故障排除的更多信息,请参阅https://altair-viz.github.io/user_guide/troubleshooting.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      相关资源
      最近更新 更多