我有一个名为 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/