Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #In questa sezione importiamo i moduli per la visualizzazione interattiva dei dati
- from bokeh.layouts import column
- from bokeh.models import ColumnDataSource, Plot, Select,LinearAxis, Grid, HoverTool
- from bokeh.models.glyphs import VBar
- from bokeh.plotting import figure,curdoc
- from bokeh.io import show,push_notebook, output_notebook,output_file
- #Output_notebook() è necessario per visualizzare
- #i grafici all'interno di jupyter notebook
- output_notebook()
- #Voglio provare a fare un plot interattivo
- #Selezionando la variabile di interesse
- #Viene rappresentato graficamente
- #L'elemento selezionato
- df_r=df_train.copy()
- #Stiamo cambiando il data type di date
- #da Time a String
- #Così che ColumnDataSource non dia di matto
- df_r['date']=df_r['date'].tolist()
- source = ColumnDataSource(data=df_r)
- #Dobbiamo selezionare tutte le colonne
- #Ad eccezione di quella contenente il tempo che sarà unica per tutti
- activity_list=df_train.columns[1:].unique().tolist().copy()
- print(activity_list)
- print(df_r.date.max())
- #La nostra variabile di default
- #Serve solo per inizializzare il sistema
- #Poteva essere Humidity o Light
- activity_selected='Temperature'
- df_r['date']=df_r['date'].tolist()
- def modify_doc(doc):
- xrange=[0,df_r.index.max()]
- yrange=[0,df_r[activity_selected].max()]
- source = ColumnDataSource(data=dict(x=df_r.index,y=df_r[activity_selected],date=df_r['date']))
- hover=HoverTool(tooltips=[('Date','@date{%F}')],formatters={'date':'datetime'})
- plot=figure(title='Andamento',tools=[hover,'pan','wheel_zoom'], plot_width=400, plot_height=400,x_range=(xrange), y_range=(yrange))
- plot.line(x='x', y="y",source=source)
- def update_plot(attr, old, new):
- activity=select.value
- data=pd.DataFrame(data=df_r[activity], index=df_r.index)
- source.data=ColumnDataSource(data=dict(x=data.index,y=data[activity],date=df_r['date'])).data
- plot.y_range.start=0
- #Questo punto serve per l'aggiornamento dell'asse y
- plot.y_range.end=df_r[activity].max()
- #In Questo modo conosciamo e visualiziamo l'ultima selezione
- #ed abbiamo uno storico delle visualizzazioni
- print("Your last selection:",select.value)
- select = Select(title='Select Activity', value=activity_selected, options=activity_list)
- select.on_change('value', update_plot)
- layout=column(select, plot)
- doc.add_root(layout)
- show(modify_doc)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement