Skip to content

Latest commit

 

History

History
165 lines (137 loc) · 4.11 KB

figurewidget-app.md

File metadata and controls

165 lines (137 loc) · 4.11 KB
jupyter
jupytextkernelspeclanguage_infoplotly
notebook_metadata_filtertext_representation
all
extensionformat_nameformat_versionjupytext_version
.md
markdown
1.1
1.1.7
display_namelanguagename
Python 3
python
python3
codemirror_modefile_extensionmimetypenamenbconvert_exporterpygments_lexerversion
nameversion
ipython
3
.py
text/x-python
python
python
ipython3
3.6.5
descriptiondisplay_aslanguagelayoutnameorderpage_typepermalinkthumbnailredirect_from
Interactive Data Analysis with Plotly
chart_events
python
base
Interactive Data Analysis with FigureWidget ipywidgets
3
example_index
python/figurewidget-app/
thumbnail/multi-widget.jpg
/python/slider-widget/

NYC Flights Database

importdatetimeimportnumpyasnpimportpandasaspdimportplotly.graph_objectsasgofromipywidgetsimportwidgets

We'll be making an application to take a look at delays from all flights out of NYC in the year 2013.

df=pd.read_csv( 'https://raw.githubusercontent.com/yankev/testing/master/datasets/nycflights.csv') df=df.drop(df.columns[[0]], axis=1)
df.sample(3)

Let's get the set of all the airlines, so that we can type the right things into the search box later.

df['carrier'].unique()

Let's assign the widgets that we're going to be using in our app. In general all these widgets will be used to filter the data set, and thus what we visualize.

month=widgets.IntSlider( value=1.0, min=1.0, max=12.0, step=1.0, description='Month:', continuous_update=False ) use_date=widgets.Checkbox( description='Date: ', value=True, ) container=widgets.HBox(children=[use_date, month]) textbox=widgets.Dropdown( description='Airline: ', value='DL', options=df['carrier'].unique().tolist() ) origin=widgets.Dropdown( options=list(df['origin'].unique()), value='LGA', description='Origin Airport:', ) # Assign an empty figure widget with two tracestrace1=go.Histogram(x=df['arr_delay'], opacity=0.75, name='Arrival Delays') trace2=go.Histogram(x=df['dep_delay'], opacity=0.75, name='Departure Delays') g=go.FigureWidget(data=[trace1, trace2], layout=go.Layout( title=dict( text='NYC FlightDatabase' ), barmode='overlay' ))

Let now write a function that will handle the input from the widgets, and alter the state of the graph.

defvalidate(): iforigin.valueindf['origin'].unique() andtextbox.valueindf['carrier'].unique(): returnTrueelse: returnFalsedefresponse(change): ifvalidate(): ifuse_date.value: filter_list= [iandjandkfori, j, kinzip(df['month'] ==month.value, df['carrier'] ==textbox.value, df['origin'] ==origin.value)] temp_df=df[filter_list] else: filter_list= [iandjfori, jinzip(df['carrier'] =='DL', df['origin'] ==origin.value)] temp_df=df[filter_list] x1=temp_df['arr_delay'] x2=temp_df['dep_delay'] withg.batch_update(): g.data[0].x=x1g.data[1].x=x2g.layout.barmode='overlay'g.layout.xaxis.title='Delay in Minutes'g.layout.yaxis.title='Number of Delays'origin.observe(response, names="value") textbox.observe(response, names="value") month.observe(response, names="value") use_date.observe(response, names="value")

Time to try the app out!!

container2=widgets.HBox([origin, textbox]) widgets.VBox([container, container2, g])
<imgsrc = 'https://cloud.githubusercontent.com/assets/12302455/16637308/4e476280-43ac-11e6-9fd3-ada2c9506ee1.gif' >

Reference

help(go.FigureWidget)
close