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