Виджеты Jupyter clear_output () не работает - PullRequest
0 голосов
/ 23 марта 2020

Я использовал раскрывающийся список ipywidgets для создания графиков для столбцов, перечисленных в раскрывающемся списке. У меня есть два вопроса. Поможет ли кто-нибудь?

  1. Я использовал clear_ouput (), чтобы очистить график перед следующим выбором. Но это не сработало;

  2. Когда я впервые щелкнул первый элемент в раскрывающемся списке («четверть»), он не ответил (график не отображен). Я должен сначала выбрать другие элементы, прежде чем смогу сгенерировать график для "квартала".

Большое спасибо!

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import ipywidgets as ipw

url = "https://data.london.gov.uk/download/number-international-visitors-london/b1e0f953-4c8a-4b45-95f5-e0d143d5641e/international-visitors-london-raw.csv"
df_london = pd.read_csv(url)

dropdown_Col = ipw.Dropdown(options = ['quarter', 'market', 'dur_stay', 'mode'], description='Sel Col NM:')

output = ipw.Output()

def Col_Sel(ColNm):
    output.clear_output()

    with output:
        sns.set_style("whitegrid")
        sns.relplot(x=ColNm, y='visits', data=df_london, kind='line', ci=None) 

def dropdown_Col_eventhandler(change):
    Col_Sel(change.new)    

dropdown_Col.observe(dropdown_Col_eventhandler, names='value')

display(dropdown_Col)
display(output)

1 Ответ

0 голосов
/ 23 марта 2020

Я добавил plt.show () и теперь работает clear_output.

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import ipywidgets as ipw

url = "https://data.london.gov.uk/download/number-international-visitors-london/b1e0f953-4c8a-4b45-95f5-e0d143d5641e/international-visitors-london-raw.csv"
df_london = pd.read_csv(url)

dropdown_Col = ipw.Dropdown(options = ['quarter', 'market', 'dur_stay', 'mode'], description='Sel Col NM:')

output = ipw.Output()

def Col_Sel(ColNm):
    output.clear_output()

    with output:
        sns.set_style("whitegrid")
        sns.relplot(x=ColNm, y='visits', data=df_london, kind='line', ci=None)


def dropdown_Col_eventhandler(change):
    Col_Sel(change.new)    

dropdown_Col.observe(dropdown_Col_eventhandler, names='value')

display(dropdown_Col)
display(output)
...