jupyter-notebook - 同一单元生成的多个 Altair 图表

标签 jupyter-notebook altair

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

最佳答案

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

关于jupyter-notebook - 同一单元生成的多个 Altair 图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61229345/

相关文章:

python-3.x - 如何消除 import IPython.nbformat : "UserWarning: nbformat.current is deprecated." 的警告

Python+Altair (Vega-Lite) : Web server

altair - 为标记设置不透明度,但不在图例中

python - 使用 Altair 的 y 双轴

windows - 在没有命令窗口的 Windows 中启动 Jupyter Notebook

python - 在 jupyter 笔记本 python 中加载数据集

python - 权限错误: [Errno 13] Permission denied in python jupyter notebook

jupyter-notebook - 将 Jupyter Lab 中的笔记本导出为 PDF 时隐藏所有代码

vega-lite - 是否可以在 vega-lite 中注册命名的自定义配色方案

python - 如何制作跨列具有一致网格的分组条形图?