Несколько карт альтаира, сгенерированных одной и той же ячейкой - PullRequest
1 голос
/ 15 апреля 2020

У меня есть список pandas фреймов данных, которые я назвал entry , которые я хочу визуализировать после запуска кода из той же ячейки. Ниже приведен код, который я использовал:

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' l oop, я вижу одну диаграмму, которая соответствует одному фрейму данных, но после запуска код выше, я не получаю никаких графиков вообще.
Кто-нибудь знает, почему это не работает или как решить эту проблему?

1 Ответ

1 голос
/ 15 апреля 2020

TLDR: используйте chart.display()

Если график не отображается в конце ячейки, его необходимо отобразить вручную.

По аналогии, если вы запустите

x + 1

самостоятельно, Python отобразит результат. Однако, если вы запустите

for x in range(10):
    x + 1

Python, ничего не отобразится, потому что последний оператор в ячейке (в данном случае для l oop) не имеет возвращаемого значения для отображения. Вместо этого вы должны написать

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

Для altair механизм аналогичен: если диаграмма определена в последнем утверждении в ячейке, она будет отображаться автоматически. В противном случае вам придется вручную запустить дисплей, что можно сделать с помощью метода отображения:

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

Для получения дополнительной информации об устранении неполадок дисплея в Altair см. https://altair-viz.github.io/user_guide/troubleshooting.html

...